尚方宝剑之说
在C ++ 11中,它是可能的:auto array = new double[M][N]; 这样,内存不会被初始化。要初始化它,请执行以下操作:auto array = new double[M][N]();示例程序(使用“g ++ -std = c ++ 11”编译):#include #include #include #include #include using namespace std;int main(){ const auto M = 2; const auto N = 2; // allocate (no initializatoin) auto array = new double[M][N]; // pollute the memory array[0][0] = 2; array[1][0] = 3; array[0][1] = 4; array[1][1] = 5; // re-allocate, probably will fetch the same memory block (not portable) delete[] array; array = new double[M][N]; // show that memory is not initialized for(int r = 0; r < M; r++) { for(int c = 0; c < N; c++) cout << array[r][c] << " "; cout << endl; } cout << endl; delete[] array; // the proper way to zero-initialize the array array = new double[M][N](); // show the memory is initialized for(int r = 0; r < M; r++) { for(int c = 0; c < N; c++) cout << array[r][c] << " "; cout << endl; } int info; cout << abi::__cxa_demangle(typeid(array).name(),0,0,&info) << endl; return 0;}输出:2 4 3 5 0 0 0 0 double (*) [2]