何时使用动态内存C++

rov*_*red 3 c++ memory pointers dynamic

所以我总是被告知你应该在编译时不知道数组的大小时使用动态内存.例如,用户需要输入数组的大小.

    int n;

cin >> n;

int array[n];

for(int ii = 0; ii < n; ii++)
{
    array[ii] = ii;
}

for(int ii = 0; ii < n; ii++)
{
    cout << array[ii] << endl;
}
Run Code Online (Sandbox Code Playgroud)

然而,这对我来说很好,我一直认为我需要使用指针和新的运算符.动态内存是否仅适用于您想要更改阵列大小,释放空间或控制何时释放内存的能力?谢谢.

Ben*_*ley 8

它工作正常,因为它是您的编译器允许的扩展.它不是合法的C++,我建议你避免它.为了帮助您避免它,我建议您编译以-pedantic将非标准扩展的使用标记为警告,并将-Werror警告视为错误.或者,-pedantic-errors如果您不希望将所有警告视为错误,则只需警告此类型.

但这并不意味着你应该使用指针和new.你应该改用std::vector.或者可能,std::deque或者std::list仅用于非常特殊的目的.对于大多数通用动态数组,std::vector是选择.