new/ delete和malloc/有free什么区别?
相关(重复?):在什么情况下我使用malloc vs new?
我在C中有一个malloc,它是26901 ^ 2*sizeof(double)
这让我想到这里最大的价值是什么?
另外,定义宏来访问这个2D数组有什么问题吗?
#define DN(i,j) ((int)i * ny + (int)j)
Run Code Online (Sandbox Code Playgroud)
因为这对我来说似乎不起作用 - 或者我至少不确定它是不是.我无法弄清楚如何在宏上进行全视图潜水,告诉我A [DN(indx,jndx)]实际上是在看什么.
我对C程序的程序执行布局图中的堆有疑问.
我知道所有动态分配的内存都分配在动态增长的堆中.但我想知道C程序的最大堆大小是多少?
我只是附加一个示例C程序...在这里我试图分配1GB内存到字符串甚至做memset ...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *temp;
mybuffer=malloc(1024*1024*1024*1);
temp = memset(mybuffer,0,(1024*1024*1024*1));
if( (mybuffer == temp) && (mybuffer != NULL))
printf("%x - %x\n", mybuffer, &mybuffer[((1024*1024*1024*1)-1)]]);
else
printf("Wrong\n");
sleep(20);
free(mybuffer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我一次在3个实例中运行上面的程序,那么malloc应该至少在一个实例中失败[我感觉如此] ......但仍然是malloc成功的.
如果成功,我可以知道操作系统如何处理3GB的动态分配内存.