2016-03-31 28 views
-1

私はそれが失敗し続けるこの方法を試してみてくださいたびに、私は、[3]割り当てメモリ

メモリポルダブル* Rを割り当てるしようとしている:

#include <cstdio> 
int main(){ 
    int N = 10; 
    double *r[3] = new double[N][3]; 
    delete r; 
    return 0; 
} 

正しい方法でどのように?

+2

新しい表現が複数の次元を持つことはできません。 – NathanOliver

+3

*正しい*方法はおそらく、裸のCスタイルの配列より 'std :: vector'を使うことでしょう。 –

+0

関連:http://stackoverflow.com/questions/36292962/how-to-go-from-foo-pfood-to-foo-pbarrowscols/36293330#36293330 –

答えて

0

使用

double (*r)[3] = new double[N][3]; 

delete [] r; 
0

ちょうどあなたが各セルにポインタポイントにメモリのブロックを割り当てる必要がstd::array

#include <array> 

int main() 
{ 
    int N = 10; 
    typedef std::array<double,3> darray; 
    darray *r = new darray[N]; 
    delete []r; 
    return 0; 
} 
1

を使用しています。

double **r = new double* [N]; 

for(int i = 0; i < N; i++) 
{ 
    *(r + i) = new double[3]; 

    delete [] *(r + i); 
} 

delete [] r; 

ベターstd::vectorを使用することです:

std::vector<std::vector<double>> r;