【发布时间】:2015-11-26 17:42:59
【问题描述】:
我正在尝试通过另一个函数分配一个字符串数组。我可以在 main 中做到这一点,但是当我在另一个函数中尝试它时(添加另一个级别的指向)我卡住了。
这是代码:
int main() {
char** book;
FillBook( &book );
...
...
}
现在我尝试为 3 个字母的 5 个字符串分配内存并填充它们,但我卡住了(程序执行停止):
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] =。检查this link。
标签: c arrays string pointers malloc