#include<stdlib.h>
#include<stdio.h>
int main(){
int row;
int col;
int i=1;
double ** doubleNode;
// *(*(doubleNode+row)+coln)
doubleNode=malloc(sizeof(double)*4);
*doubleNode=malloc(sizeof(double *)*4);
for(row=0; row <4; row++){
for(col =0; col<4;col++){
*(*(doubleNode+row)+col)=i;
i++;
}
}
free(doubleNode);
free(*doubleNode);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是双指针的测试代码.它用gcc编译好,但是当我运行它时.它给了我分段错误.你知道我哪里做错了吗?
谢谢
doubleNode必须将内存分配为指向double的指针,然后为数组中的每个指针分配内存:
doubleNode=malloc(sizeof(double*)*4);
for (int i = 0; i < 4;++i)
doubleNode[i]=malloc(sizeof(double)*4);
Run Code Online (Sandbox Code Playgroud)
这同样适用于释放内存:
for (int i = 0; i < 4;++i)
free(doubleNode[i]);
free(doubleNode);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |