【发布时间】:2011-08-06 02:05:30
【问题描述】:
这是我正在使用的数组库中的一个 sn-p 代码。这在 Windows 上运行良好,但是当我在 linux 上使用 gcc 编译时,如果此函数崩溃。当试图缩小问题范围时,我添加了一个 printf 语句,代码停止崩溃。
void _arrayCreateSize( void ***array, int capacity )
{
(*array) = malloc( (capacity * sizeof(int)) + sizeof(ArrayHeader) );
((ArrayHeader*)(*array))->size = 0;
((ArrayHeader*)(*array))->capacity = capacity;
// printf("Test!\n");
*(char**)array += sizeof(ArrayHeader);
}
只要那个 printf 被取出,它就会再次开始崩溃。我完全困惑为什么会这样。
【问题讨论】:
-
void ***array天哪。 -
它是一个指向结构体指针数组的指针。
-
添加
-Wall -Wextra时是否收到编译器的警告? -
你是怎么调用这个函数的?
-
我真的希望这段代码检查来自
malloc(3)的返回值,以确保它没有返回错误。