gpt4 book ai didi

C无法分配足够的内存

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:12 25 4
gpt4 key购买 nike

下面的代码没有给出任何分配错误,但是计数在大约 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;
}

最佳答案

Turbo C++ 在 DOS 环境中以实模式运行,除非您特别启用保护模式。在实模式下,内存空间被分成 64kbyte 的段,size_t(malloc 的参数)很容易就是 16 位。 1024*1024*10 mod 65536 = 0,因此上面对 malloc 的调用结果为 malloc(0)

malloc(0) 的返回值是实现定义的,可能是非零值。 ( what does malloc(0) return? ) 使用返回的指针不是一个好主意,Windows XP 可能会干预内存分配错误。

关于C无法分配足够的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38926554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com