[英]Send and Return 2D dynamic struct from a function in C++
我想从C ++中的函数发送和检索2D动态结构。 我已经在一些站点中搜索了,但是没人能用。 有谁能够帮助我?
这是我的功能:
122 void initializePopulation(Body* bodies, int nBodies, Body** kromosom_awal, int nKromosom) 123 { 124 time_t t; 125 time(&t); 126 typedef boost::mt19937 RNGType; 127 RNGType rng((unsigned int) t); 128 boost::uniform_int<> awal_dan_akhir(1, 10); 129 boost::variate_generator< RNGType, boost::uniform_int<> > 130 acak(rng, awal_dan_akhir); 131 cout << "fungsi inisialisasi" << endl; 132 for(int i=0; i<nKromosom; i++) 133 { 134 for(int j=0; j<nBodies; j++) 135 { 136 cout << "nBodies: " << nBodies << " " << i << j << " " << kromosom_awal[i][j].x << " " << bodies[i].x << endl; 137 kromosom_awal[i][j].x = bodies[j].x; 138 kromosom_awal[i][j].y = bodies[j].y; 139 kromosom_awal[i][j].z = bodies[j].z; 140 kromosom_awal[i][j].dx = bodies[j].dx; 141 kromosom_awal[i][j].dy = bodies[j].dy; 142 kromosom_awal[i][j].dz = bodies[j].dz; 143 kromosom_awal[i][j].rho = (acak()/(double) 10); 144 } 145 cout << "nKromosom : " << i << " " << nKromosom << endl; 146 } 147 }
这是我所谓的函数:
160 void goGA(XYZ* stasiun, int nStasiun, Body* bodies, int nBodies) 161 { 162 //initialize population 163 int nKromosom = 10; 164 Body *kromosom_awal[nKromosom]; 165 initializePopulation(bodies, nBodies, kromosom_awal, nKromosom); 166 }
但它给我一个错误:
Segmentation fault: 11
我的错误在哪里?
哦,顺便说一句,这是我的结构声明:
17 typedef struct Body 18 { 19 double x; 20 double y; 21 double z; 22 double dx; 23 double dy; 24 double dz; 25 double rho; 26 }Body; 27 28 typedef struct Response 29 { 30 double x; 31 double y; 32 double z; 33 double grav; 34 }Response; 35 36 typedef struct gen 37 { 38 double x; 39 double y; 40 double z; 41 double rho; 42 }gen; 43 44 typedef struct XYZ 45 { 46 double x; 47 double y; 48 double z; 49 }XYZ;
您有内存分配问题。
1) Body *kromosom_awal[nKromosom];
为nKromosom指针分配内存,但是数据的分配内存在哪里?
2)是否在goGA
函数外部分配了Body* bodies
内存?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.