【发布时间】:2015-08-21 05:49:11
【问题描述】:
我想写一段C代码,看看静态分配和动态分配的区别。
这是我的想法,但它不起作用。
它只是初始化一个大小为10的数组,但分配100元素而不是10个。然后我将初始化另一个足够大的数组,希望替换不属于array1[10]的90个元素,然后我打印出array1 的100 元素。
int i;
int array1[10];
int array2[10000];
for(i=0;i<100;i++)
array1[i] = i;
for(i=0;i<10000;i++)
array2[i] = i+1;
for(i=0;i<100;i++)
{
printf("%d \n",array1[i]);
}
我希望得到的是在使用静态分配时前 10 个元素之外的垃圾,之后,我将使用 malloc 和 realloc 来确保这 100 个元素正确存在。但很遗憾,似乎内存足够大,以至于剩下的 100 个元素不会被替换!
我尝试在 linux 上运行代码并使用“ulimit”来限制内存大小,但它也不起作用。
有什么想法吗?
【问题讨论】:
标签: c arrays memory memory-management