微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

堆大小为Windows应用程序

我有一个8 Gb RAM的Windows7最大64位计算机。 我在MSVC中创build了一个Win32控制台应用程序,并编写如下:

size_t const s_chunkSize = 1024 * 32; size_t total = 0; for (;;) { if (!::malloc(s_chunkSize)) { break; } total += s_chunkSize; } printf("total = %li",total); // yes,I do not free allocated memory for simplicity

输出我2111668224低于2Gb。 我如何强制我的程序分配更多的2Gb? 我必须更改一些MSVC项目设置? 或者我不得不使用malloc但Windows特定的function? 或者我必须以某种方式configurationWindows?

SetwindowPos / MoveWindow持续存在的问题

自动工具语法错误与ax_check_compile_flag

可以写(2)返回0字节写*,如果它做什么?

EventLog.EntryWritten事件处理来自过去的事件

编写Windows端口监视器基础

如注释中所述,您必须使用/ LARGEADDRESSAWARE链接程序标志,以便在提供虚拟地址空间的计算机上(通常是带有/ 3GB标志的32位计算机或64位计算机)使用> 2GB的虚拟地址空间。 请注意,这样做需要您在处理指针( http://blogs.msdn.com/b/oldnewthing/archive/2004/08/12/213468.aspx以及从那里链接文章)时特别小心,允许您访问超过4 GB的虚拟地址空间。

一个更好的解决方案是建立一个64位版本的程序:你不再局限于一个32位的地址空间,而且避免了高位设置的地址警告。 显然,不足之处(可能出现的移植问题除外)是生成的可执行文件只能在64位机器上运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐