【发布时间】:2017-07-14 05:28:36
【问题描述】:
如何增加 Code::Blocks 中的堆栈大小?
我读过this,它说VS 中的默认堆栈大小是1MB。现在就我而言,它与 VS 无关,堆栈大小取决于操作系统。在我的 win10 情况下,它是 1MB。
This 似乎有点过时,如下所示:project->build options->linker settings->other linker options 不再存在。
项目栏下没有构建。
无论如何,我需要增加我的堆栈大小,以便我可以声明一个巨大的二维字符数组并从缓存中受益。喜欢arr[1000][1000]。因为它将位于连续内存上,而 char* arr[100] 将指向包含 1000 个字节的 1000 个不同的内存地址。
我正在使用 Windows 10 mingw 编译器。
【问题讨论】:
-
堆栈上的内存并没有什么神奇之处。它不会比从堆中分配的内存快。
-
@HarryJohnston 是的,但是将整个东西放在一个连续的插槽中将从缓存中受益。与使用
malloc在堆上分配时不同,我将有 1000 个不同的段和更多的缓存未命中。 -
哦,我明白了 - 你认为你必须分配 1000 个不同的 1000 字节块。你没有。只需分配一百万字节的单个块,并将其转换为二维数组。比如说,你不能在 Java 中做到这一点,但它在 C/C++ 中可以正常工作。
-
语法有点棘手:
char (*arr)[1000] = (char(*)[1000])malloc(1000*1000); -
@HarryJohnston 请解释一下 :) ?这是一种分配 1000 个 1000 字节的块并将它们放在一个连续的内存块中的方法吗?如果是这样,为什么不首先使用二维数组?不过感谢您的评论!
标签: c++ c arrays windows codeblocks