【发布时间】:2023-04-05 11:37:02
【问题描述】:
下面的代码没有给出任何分配错误,但是计数在大约 16970 处结束,出现内存分配错误并且系统停止 ,我用的是 Turbo C++ 3.0 IDE ,Windows XP sp3 , 所有分区:NTFS ,PC : Dell 1545 安装了 2 GB 内存。
#include <stdio.h>
#include <stdlib.h>
long counter=0;
int main(int argc, char *argv[])
{
char* array=(char*) malloc (1024*1024*10);
if (array==NULL)
{
/* allocation error */
return 1;
}
for (counter=0 ; counter<10000000;counter++)
array[counter] = 1; // trying to fill the array with one's
free (array);
return 0;
}
【问题讨论】:
-
@Meninx:这会是什么宇宙?
1024*1024*10 -> 10,485,760,绝对不小于10,000,000 -
TC++ .. 再次.. 摆脱这个古董!
-
Turbo C++ 3.0 已经很老了。它的
ints 是否可能只有 16 位宽? -
尝试打印
1024*1024*10的评价,看看是否符合您的预期。 -
或打印
sizof(int)。