Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
马洛克问题 #包括 #包括 int main(){ int行; int col; int i=1; 双**双节点; //*(*(双节点+行)+coln) doubleNode=malloc(sizeof(double)*4); *doubleNode=malloc(sizeof(double*)*4); 对于(row=0;row_C_Malloc - Fatal编程技术网

马洛克问题 #包括 #包括 int main(){ int行; int col; int i=1; 双**双节点; //*(*(双节点+行)+coln) doubleNode=malloc(sizeof(double)*4); *doubleNode=malloc(sizeof(double*)*4); 对于(row=0;row

马洛克问题 #包括 #包括 int main(){ int行; int col; int i=1; 双**双节点; //*(*(双节点+行)+coln) doubleNode=malloc(sizeof(double)*4); *doubleNode=malloc(sizeof(double*)*4); 对于(row=0;row,c,malloc,C,Malloc,我可以立即看到一个问题。释放doubleNode,然后取消引用它。交换两个空闲节点 此外,我认为您的Malloc尺码是错误的。第一个尺码应该是sizeof(double*),第二个尺码应该是sizeof(double*) 编辑:正如其他人所说,您只分配了矩阵中的第一个“列”。我可以立即看到一个问题。您释放doubleNode,然后取消引用它。交换两个空闲的 此外,我认为您的Malloc尺码是错误的。第一个尺码应该是sizeof(double*),第二个尺码应该是sizeof(double*) 编

我可以立即看到一个问题。释放doubleNode,然后取消引用它。交换两个空闲节点

此外,我认为您的Malloc尺码是错误的。第一个尺码应该是sizeof(double*),第二个尺码应该是sizeof(double*)


编辑:正如其他人所说,您只分配了矩阵中的第一个“列”。

我可以立即看到一个问题。您释放doubleNode,然后取消引用它。交换两个空闲的

此外,我认为您的Malloc尺码是错误的。第一个尺码应该是sizeof(double*),第二个尺码应该是sizeof(double*)


编辑:正如其他人所说,您只分配了矩阵中的第一个“列”。

doubleNode的内存必须分配为指向double的指针,然后您应该为数组中的每个指针分配内存:

#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; 
}
doubleNode=malloc(sizeof(double*)*4);
对于(int i=0;i<4;++i)
doubleNode[i]=malloc(sizeof(double)*4);
这同样适用于释放内存:

doubleNode=malloc(sizeof(double*)*4);
for (int i = 0; i < 4;++i)
   doubleNode[i]=malloc(sizeof(double)*4);
for(int i=0;i<4;++i)
自由(双节点[i]);
自由(双节点);

必须将
双节点的内存分配为指向double的指针,然后您应该为数组中的每个指针分配内存:

#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; 
}
doubleNode=malloc(sizeof(double*)*4);
对于(int i=0;i<4;++i)
doubleNode[i]=malloc(sizeof(double)*4);
这同样适用于释放内存:

doubleNode=malloc(sizeof(double*)*4);
for (int i = 0; i < 4;++i)
   doubleNode[i]=malloc(sizeof(double)*4);
for(int i=0;i<4;++i)
自由(双节点[i]);
自由(双节点);

您只需
malloc
ing矩阵的第一个“列”。此行:

for (int i = 0; i < 4;++i)
   free(doubleNode[i]);
free(doubleNode);
与此等效:

*doubleNode=malloc(sizeof(double *)*4);

您需要为每一列(或每一行)执行一次。此外,我认为您的
sizeof
语句中的类型应该颠倒。

您只是
malloc
ing矩阵的第一个“列”。此行:

for (int i = 0; i < 4;++i)
   free(doubleNode[i]);
free(doubleNode);
与此等效:

*doubleNode=malloc(sizeof(double *)*4);

您需要为每一列(或每一行)执行一次此操作。此外,我认为您的
sizeof
语句中的类型应该颠倒。

您的速度更快。提醒我明天更新您的答案,因为我今天没有剩余的投票。@Dave-为您解决了:)@Nyan我建议使用二维数组而不是双间接指针-本可以省去OP表单的麻烦。你更快。提醒我明天更新你的答案,因为我今天没有投票了。@Dave-帮你解决了:)@Nyan我建议使用二维数组而不是双间接指针-会让OP从这个麻烦中解脱出来的。