我正在尝试按如下方式分配一个数组:
class foo{
public:
void func(){double arr[13][64][64][64];}
};
int main()
{
foo* inst = new foo();
inst->func();
return 0;
}
我对答案的印象是: 这种类型的内存是在堆上分配的还是在堆栈上分配的? 数组 arr 将被放置在堆上(因为类的实例在堆上)。当我遇到分段错误时,情况似乎并非如此。如果我将 a 的声明更改为: double* arr = new double[13*64*64*64]; (并正确删除)然后一切都很好。
这里发生了什么事?