How Dynamic memory allocation allocates memory during run time ?
1 | int a[10]; |
上面的代码将创建一个四个int变量大小的数组,因此程序只能存储4个整数。现在考虑以下命令
1 2 3 4 5 | int *a,*b,*c,*d; a= (int *)malloc(sizeof(int)); b= (int *)malloc(sizeof(int)); c= (int *)malloc(sizeof(int)); d= (int *)malloc(sizeof(int)); |
上述代码部分将创建四个int类型指针,并将为它们分配int大小的内存。我了解到动态内存分配在RUM时间分配内存。我想知道,不管使用数组或MALLC(动态内存分配),用户将只得到四个int大小的空间来存储。如果我们排除它是一个带有int大小内存的指针变量,那么动态内存分配的使用将是什么。在这两种情况下,用户只会得到四个int空间;需要访问源代码。那么我们为什么要使用malloc或动态内存分配呢?
考虑
1 2 3 | int a,*b; cin >> a; b= (int *)malloc(a*sizeof(int)); |
该类型的用户数和
在尖"的评论,这仍然是在C + +的坏作风,用
你对这一切只是记忆。但是,有一个差分对的使用。
在一般的情况下,你不一定知道未来的时间,你将需要的内存量的时候,这样的内存,然后可以被安全释放。
但在一些特殊情况下发生的,你知道多少内存你前面的球队时,你需要将它将停止和需要。例如,你知道你需要单一的整数计数器的运行时行为的简单的循环,你将用它做一次环已被完成的。
1 | int a[10]; |
上述代码将分配一个线阵列的10
1 | int *a,*b,*c,*d; |
然而,上述的配置,也会分到4
1 2 3 4 | a= (int *)malloc(sizeof(int)); b= (int *)malloc(sizeof(int)); c= (int *)malloc(sizeof(int)); d= (int *)malloc(sizeof(int)); |
最后,将上述的和可变的,动态分配的
请注意,动态分配的内存可以被释放,在不同的resized静态存储器和运行时配置。记忆存储时间是自动释放时,超出范围的运行,但不能resized。
如果你的程序在C,结果是不必要的
然后你做什么在你的代码是不必要的,4分;事实上,你可以在一个阵列配置4只与一个
1 2 | int *a; a = malloc(4 * sizeof(int)); |