【发布时间】:2013-11-29 09:20:27
【问题描述】:
我帮助在初学者课程中教授 C。我们正在讨论使用 malloc 进行动态内存分配,一个学生想在 malloc 周围放置一个包装器。我不确定这是否有用,但玩弄东西是最好的学习方式。
但是,当学生尝试通过他们的 malloc 包装函数为数组分配内存时,它不起作用 - 分段错误。
下面给出了一个最小的例子。
#include <stdlib.h>
void mallocWrapper(int *intArray, int length){
intArray = malloc(length * sizeof(int));
}
int main() {
int *array;
int arraySize = 10;
mallocWrapper(array, arraySize);
// this line causes the Segmentation fault
array[0] = 0;
return 0;
}
据我所知,数组变量将成为内存中为数组保留的第一个点的地址。我认为无论在哪里分配内存,即在 main 中还是在 mallocWrapper 中,都会出现这种情况。
因此,我不知道该告诉学生什么,只能回复他们。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
是的,我只是错过了它。我明白为什么它不起作用,现在将告诉提出问题的学生。但也许你从来没有错过你生活中的一个明显错误。在这种情况下,对你来说,调试一定是一个梦想。