Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C如何分配超过2GB的内存_C_Malloc - Fatal编程技术网

C如何分配超过2GB的内存

C如何分配超过2GB的内存,c,malloc,C,Malloc,我正在使用code::blocks编译一个C程序。这台电脑是:Windows 8.2 64b,带有32GB内存+32GB交换(如果需要)。我需要24GB来存储中间值,以使程序运行足够快(大约快X12) 我需要分配大约240个100MB的块。 malloc在第19个块(还有一些其他的小块)返回NULL,因此总计为2GB 有没有办法编译/链接程序以分配内存? 代码::块以外的其他工具?(我用Matlab做的,效果很好,没有内存问题,但Matlab确实比C慢) 致以最良好的祝愿。 密歇根州。您需要将其

我正在使用code::blocks编译一个C程序。这台电脑是:Windows 8.2 64b,带有32GB内存+32GB交换(如果需要)。我需要24GB来存储中间值,以使程序运行足够快(大约快X12)

我需要分配大约240个100MB的块。 malloc在第19个块(还有一些其他的小块)返回NULL,因此总计为2GB

有没有办法编译/链接程序以分配内存? 代码::块以外的其他工具?(我用Matlab做的,效果很好,没有内存问题,但Matlab确实比C慢)

致以最良好的祝愿。
密歇根州。

您需要将其构建为64位应用程序,因为32位Windows应用程序的4GB可寻址内存数量有限,很多内存都是为操作系统等保留的。此外,我认为MinGW 32位不再被维护(?)

  • 下载并安装Mingw64
  • 在代码块的“设置->编译器”中,选择“工具链可执行文件”选项卡
  • 指定路径,类似于C:\Program Files\mingw-w64。。。(无论安装在何处)
  • 单击“自动检测”按钮。所有gcc路径和工具现在都应该更新为指向64位安装。C编译器应该类似于“x86_64-w64-mingw32-gcc.exe”

您的程序真正在做什么?你应该用这些内存干什么?你正在把你的应用编译成一个32位的应用。它们只能访问4Gib地址空间(2^32字节=4Gib),其中2个由Windows保留。您需要将其构建为64位应用程序。Code::Blocks不是编译器。它是IDE,使用您选择的编译器和选项。您使用哪个版本的编译器?此内存用于存储算法的中间值。我要么存储它们,要么在每个循环中重新计算它们,这非常长。我使用minGW-32。我尝试了minGW64,但没有成功:链接过程中出现了工具错误,我可能错误地配置了code::blocks(与内存分配无关)。我是否能够通过minGW64分配超过4GB的内存?