【发布时间】:2015-08-31 19:08:01
【问题描述】:
至少对我来说足够了不起。下面的代码在我的 ubuntu 15.04 上导致 segmentation fault: core dump 但在我的朋友 debian 平台上成功运行。
还要注意,我知道我的array 具有所需的索引,因此我获得了存储空间,并且索引具有整数值。
int array_dequeue(int **array, int *n)
{
int c;
for (c = 0; c < *n - 2 ; c++)
*array[c] = *array[c + 1];
*n--;
return 0;
}
//Calling that in main
int main(int argc, char* argv[])
{
int length = atoi(argv[1]); // ./mpi.o 4 so length is 4
int *VP;
VP = (int*)malloc(length*sizeof(int));
for(i=0; i<vertices; i++)
{
VP[i] = i + 1;
}
array_dequeue(&VP, &length);
}
任何帮助将不胜感激。提前致谢
【问题讨论】:
-
请包括定义和初始化部分。这可能是段错误的来源。
-
vertices中有什么内容? -
把
*n--改成(*n)--;后缀--比*绑定得更紧密,所以你减少的是指针,而不是它指向的内容。 -
或者只使用
--*n,因为无论如何你都在扔掉preval。你可能想看看operator precedence chart。它可能会改变您对*array[c]真正含义的理解。 -
再次。查看 C 的 the operator precedence,然后考虑
*array[c]的实际作用。
标签: c ubuntu segmentation-fault coredump