繁体   English   中英

数组中的C ++内存分配

[英]C++ memory allocation in arrays

    int m,n;
    cin>>m>>n;
    int A[m][n];

问题是:数组A将在C ++中的堆栈上获得内存吗?

编辑:我知道使用new是更好的方法。 该技术在我的mingw g ++编译器中有效。 我只是好奇。

此行为取决于特定的编译器,而不是标准的一部分

mingw是其端口的gcc ,用于automatic variables (包括variable lengths arrays )的内存在堆栈上分配。

根据gcc手册:

6.19可变长度的数组

[...]这些数组的声明与其他任何自动数组一样,但是其长度不是常量表达式。 存储在声明时分配,并在包含声明的块作用域退出时释放。 [...]您可以使用alloca函数来获得类似于可变长度数组的效果。

参考: https : //gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

根据man 3 alloca说法:

由alloca()分配的空间在堆栈帧内分配

请记住:

ISO C ++ 禁止使用可变长度数组

另外,您可以动态分配数组(使用new ),或者最好尽可能使用C ++容器。


编辑:基于Paul的注释,增加了关于编译器之间变量行为的注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM