调用静态库函数时出现分段错误
问题描述:
我有简单的OpenGL C程序(来自NeHe lesson 2)。有初始化函数InitGL。
我已经在我的静态库函数foo
:调用静态库函数时出现分段错误
void foo(double *p)
{
p[0] = 1.0;
}
当我在InitGL
开始定义的双阵列:
double arr[1000];
,并修改它在InitGL
一切工作正常。
当我为这个数组动态分配内存,并从InitGL
调用foo
一切工作太细:
double *p = (double *)malloc(1000 * sizeof(double));
foo(p);
但是,当我在InitGL
开始定义数组并调用foo
从InitGL
:
double p[1000];
foo(p);
我在行
p[0] = 1.0;
我得到分段错误
错误在哪里?
答
Silver_Ghost的编辑问题,进入这里,所以这个问题不显示为具有0-2答案:
非常非常愚蠢的错误:d
最初我已经writen函数:void cg_random_points(double **dest, int n, double xl, double xr, double yl, double yr, double zl, double zr) for generate set of random points in
三维空间。当然还有 分割的错,因为我必须 申报列数(我在Kernighan和 里奇书阅读 31分钟前:)当我修复功能 声明
void cg_random_points(double (*dest)[3], int n, double xl, double xr, double yl, double yr, double zl, double zr) segmetation fault continued throw by
一个for循环,其中我忘了改变 10000到1000.现在一切正常。
向我们展示实际的代码 - 没有它,我们只是猜测。 – 2010-10-05 13:40:14
提出的代码应该可以正常工作。我会指责你的代码的另一部分的内存损坏,因为它只发生在堆栈上。 – jweyrich 2010-10-05 13:44:15
很抱歉,我创建了错误并更新了我的问题:) – Kirill 2010-10-05 14:13:39