1

如果您执行了以下几行:

    void dummy () {
     int n;
     scanf ("%d", &n);
     int A[n];
    }

数组 A 将分配在 STACK 上还是 HEAP 上?

4

1 回答 1

5

这应该是一个 C 或 C++ 问题吗?

请注意,您的数组声明在 C++ 中是非法的。在数组声明中使用非常量表达式来指定数组大小是非法的。

假设您的 C++ 编译器支持此声明(从 C 语言借用此功能),A则它是一个本地数组对象。它的分配方式与声明的任何其他没有链接的本地对象相同,即具有自动存储持续时间(您的术语中的“堆栈上”)。

于 2013-10-02T00:21:24.287 回答