[英]segmentation fault (core dumped) when dynamically allocating a 2d array
使用動態分配的二維數組時出現segmentation fault (core dumped)
。 我的代碼如下:
#define TMILKY 1e4
#define TABLE_SIZE 10000
struct func_params{
double *(pop)[3];
};
我想分配一個 TABLE_SIZE 行和 3 列的二維數組。
int main(int argc, char **argv){
struct func_params params;
double t=0;
int i=0;
params.pop[3] = malloc(sizeof(*params.pop[0]) * TABLE_SIZE);
if (params.pop == NULL) printf("population: allocation failed");
while (t<TMILKY){
params.pop[0][i]=0;
params.pop[1][i]=2;
params.population[2][i]=0;
printf("i %d t %e P %e B %e \n",i,t,params.population[0][i],params.population[1][i]);
t = t+100;
i++;
}
free(params.population[3]); /* deallocate the buffer */
return(0);
}
有人可以幫助發現我的錯誤...?
params.pop[3]
是一個超出范圍的元素。 你不能在那里讀或寫任何東西。
而不是使用它,您必須對params.pop
的每個元素使用malloc()
和free()
。
分配:
for (int j = 0; j < 3; j++) {
params.pop[j] = malloc(sizeof(*params.pop[j]) * TABLE_SIZE);
}
釋放:
for (int j = 0; j < 3; j++) {
free(params.pop[j]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.