【发布时间】:2017-01-17 21:24:58
【问题描述】:
package.c:
double * foo(int length) {
int i;
double * a;
a = malloc(sizeof(double) * length)
for(i = 0; i < length; i++ ) {
a[i] = 0.0;
}
return a;
}
main.c
int main(void) {
int i;
double * vector;
vector = foo(999999);
for(i =0;i < 999999; i++) {
printf("%f", vector[i]);
}
return 0
}
我的代码有什么问题?我遇到了分段错误(核心转储),我的动态向量总是包含超过 1m 的元素。
【问题讨论】:
-
我相信它是动态的。 :)
-
你在混用
length和x吗? -
您知道
malloc会失败吗?那么它会返回一个空指针吗?当您访问空指针时,您认为会发生什么?请阅读undefined behavior。 -
你的主文件应该有
foo()的声明。如果foo写在某个头文件中,请包含该特定头文件。 -
你也应该在退出前释放内存。
标签: c pointers segmentation-fault