我现在正在尝试声明一个大字符数组。我使用字符数组作为位图(如在布尔图中的图,而不是的图像文件类型)。以下代码会生成一个编译错误。在C++中声明大字符数组
//This is code before main. I want these as globals.
unsigned const long bitmap_size = (ULONG_MAX/(sizeof(char)));
char bitmap[bitmap_size];
的错误是在阵列方向溢出。我意识到我试图让我的流程消耗大量数据,并且可能会有一些限制,阻止我这样做。我很好奇我是否犯了语法错误,或者是否需要从内核请求更多资源。另外,我对创建一些类的位图没有兴趣。感谢您的时间。
编辑 ULONG_MAX是非常依赖于你正在使用的机器。在特定的机器上,我编写的代码超过了42亿。总而言之,我不会像常量那样使用这个常量,至少是为了内存分配的目的。
只是供参考,'sizeof(char)'总是1,所以这个部分是毫无意义的。 – 2012-02-23 22:33:45
你知道你正在尝试在32位机器上分配4GB的内存吗? – fazo 2012-02-23 22:33:52
后续4千兆字节的内存 – triclosan 2012-02-23 22:35:45