动态内存分配的交叉编译问题

时间:2013-04-15 22:28:03

标签: c++ memory-management cross-compiling ansi

我为一个作业写了一个程序,我用这种方式分配了内存: EdgeBucket* edgeTable[ n_scanlines ];。我知道这在C中通常是非法的,但我不知道它也不能在C ++中完成。但是,当我使用g ++编译它时,它不会产生编译错误。但我的评分员正在使用视觉工作室,当他试图构建我的程序时,它给出了错误,指出数组的长度必须是恒定的。我通常使用-ansi和-Wall选项编译我的程序以确保交叉编译器的完整性,但即使这样也没有检测到。我担心我的成绩会因此而受到影响,所以有人知道为什么-ansi编译器没有发现这一点,以及如何防止进一步的交叉编译器差异?

1 个答案:

答案 0 :(得分:1)

使用-pedantic-errors标志。 Example

它们被称为VLA(可变长度阵列)。它在C99中是合法的,在C ++中是非法的。