我正在尝试通过另一个函数来分配字符串数组。在主函数中,我可以做到这一点,但是当我尝试在另一个函数中进行操作时(添加了另一层指针),我卡住了。
以下是代码:
int main() {
char** book;
FillBook( &book );
...
...
}
现在我尝试为5个由3个字母组成的字符串分配内存并填充它们,但我卡住了(程序执行停止):
void FillBook( char*** book_pt ) {
*book_pt = malloc( 5 * sizeof( char* ) ); //this is where I make space for 5 strings
*book_pt[0] = malloc( 5 * sizeof( char ) ); //this one works
strcpy(*book_pt[0], "ok");
*book_pt[1] = malloc( 5 * sizeof( char ) ); //this one doesn't and the execution stops here
strcpy(*book_pt[1], "no");
return;
}
每次在 *book_pt[0] 之后尝试分配指针都会产生相同的效果。使用 strdup 也是一样的情况。
添加以下代码行:
(*book_pt == NULL)
第一次malloc后,它不会返回NULL值。
(*book_pt)[1] =
。请查看此链接。 - Matthew Gunn