我必须创建一个2D矩阵,并且必须在每个单元格中放置一个数组,该数组的长度是在函数中计算的,当我尝试以下代码时,它会因错误Rmd
而崩溃。在我看来,矩阵具有N_Sweep行,N列,并且最后一个维度是在函数中计算的。
Segmentation fault (core dumped)
该函数的原型为:
double ***gamma;
gamma = malloc(N_Sweep*sizeof(double**));
for(i=0;i<N_Sweep;i++){
gamma[i] = malloc(N_Sweep*N*sizeof(double*));
}
// ...
for(t=0;t<N;t++){
for(i = 0; i<N_Sweep; i++){
for(t_M = 1; t_M<(N_Sweep - i); t_M++){
gamma[i][t] = malloc(sizeof(double) * (N_Sweep-i));
gamma[i][t][t_M] = 3.0;
}
}
}
答案 0 :(得分:0)
首先,您应该在第一个循环中仅分配N * N_Sweep
个字节,因为您不希望N列double ***gamma;
gamma = malloc(N_Sweep*sizeof(double**));
for(i=0;i<N_Sweep;i++){
gamma[i] = malloc(N*sizeof(double*));
}
// ...
for(t=0;t<N;t++){
for(i = 0; i<N_Sweep; i++){
gamma[i][t] = malloc(sizeof(double) * (N_Sweep-i));
for(t_M = 1; t_M<(N_Sweep - i); t_M++){
gamma[i][t][t_M] = 3.0;
}
}
}
,而且在第三个嵌套循环中,您要多次分配矩阵的第三个维度(一次内存泄漏),您应该在进入循环之前执行一次。
因此代码应为:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="React Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>