c++ - 运行时在栈上动态分配

标签 c++

main()
{
int i=256;
char buf[i];
}

在 g++ 上完美编译,但在 visual studio 8 上出错。

谁知道为什么会这样

谢谢

最佳答案

在 C++ 中,数组的大小是固定的。然而,在 C99 中,存在称为可变长度数组或 VLA 的东西。这就是您在这里所做的。

g++(C++ 编译器)是 gcc(C 编译器)的兄弟,g++ 允许您使用 C99特性,而 VS 没有这样的东西。本质上它是一个非标准的 C++ 扩展。

如果您将 i 设置为编译时常量,它就可以工作(因为这是标准的 C++):

const int i = 256; // obviously cannot change at runtime.

如果您需要 C++ 中的动态数组,请使用 std::vector .


请注意,在 C++ 中,您需要为 main 指定返回类型。这是并将始终是 int

关于c++ - 运行时在栈上动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489970/

相关文章:

c++ - 在 OCR 中检测边界框?

c++:查找程序中的最大容器

c++ - 如何解决C++中的异步任务错误

c++ - IEEE 754 浮点除法的可逆性

c++ -::operator delete( void * ) 是否知道用::operator new( size_t ) 分配的内存大小

c++ - [conv.integral]/3 在最新的 C++ 草案中

c++ - 未定义模板的隐式实例化 'class'

C++ 模板 : Select different type based on value of template parameter

c# - Try 不捕获 DllImport 函数中的异常

c++ - 如何改善我的文件写入方法以减小Wavefront Object文件的大小?