繁体   English   中英

从C ++中的函数发送和返回2D动态结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM