我有一个非常大的数组,它的长度必须是 262144 个元素(将来可能会更大)。我试过像这样在堆栈上分配数组:
#define SIZE 262144
int myArray[SIZE];
但是,当我尝试添加超过某个点的元素时,当我尝试访问它们时,这些值似乎有所不同。我知道这是因为堆栈上只有有限数量的内存,而不是具有更多内存的堆。
我尝试了以下方法,但运气不佳(无法编译):
#define SIZE 262144
int *myArray[SIZE] = new int[SIZE];
然后我考虑使用 malloc
,但我想知道是否有更类似于 C++ 的方式来执行此操作...
#define SIZE 262144
int *myArray = (int*)malloc(sizeof(int) * SIZE);
我应该只使用 malloc
吗?
最佳答案
你会想像这样使用 new:
int *myArray = new int[SIZE];
我还会提到另一面,以防万一......
自从您从堆栈过渡到堆后,您还需要在完成后清理此内存。在堆栈上,内存会自动清理,但在堆上,你需要删除它,因为它是一个数组,你应该使用:
delete [] myArray;
关于c++ - 如何在 C++ 中创建一个位于堆而不是堆栈的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675817/