【发布时间】:2013-07-15 22:11:46
【问题描述】:
我在我的代码中遇到了分段错误,我不确定是什么原因造成的。更奇怪的是,当我在 gcc-4.4.6 RH6 中编译/运行时,我没有收到任何错误,但在其他编译器/linux 发行版上,我收到了分段错误错误。
这是我认为可能会产生问题的部分代码的 sn-p:
int BIN_SIZE=(2*width)/bins;
//binCounts and binCounts2 store the fragment counts in each bin. mask=1 flags histone modification site
float **binVals;
binVals = (float **)malloc(chromNum*sizeof(int *));
//Initialize the arrays
totalBinNum = 0;
for (i=0;i<chromNum;i++)
{
totalBinNum += chromInfo[i].chromSize/BIN_SIZE+1;
binVals[i] = (float *)malloc((chromInfo[i].chromSize/BIN_SIZE+1)*sizeof(float));
memset(binVals[i], 0, (chromInfo[i].chromSize/BIN_SIZE+1)*sizeof(float));
}
如果您知道一些可能导致错误的简单方法,请告诉我?否则它也可能在代码的其他部分导致不是智能 Q :(
【问题讨论】:
-
malloc(chromNum*sizeof(int *));我在这里看不到int*。 -
不是直接的答案,但在 Linux 上,使用调试信息 ('-g') 很容易编译,使用 GDB 运行程序,并使用“backtrace”命令(如果需要)。我会尝试这样做,因为如果您知道错误发生在哪一行,那么找出您做错了什么会容易得多。 :)
-
你试过 valgrind 吗?
-
并不是说我不信任您的代码,但我看到分段错误最有可能发生的地方是您的
chromInfo未正确初始化为chromNum大小。
标签: c gcc segmentation-fault