【发布时间】:2021-07-06 08:41:25
【问题描述】:
我正试图找出我的问题出在哪里,但似乎找不到, 我想为结构中的变量分配动态内存, 我已经尝试了各种方法,但它不起作用 我收到警告:发生了异常。分段错误
当我为 *bookcase 分配内存时,它的工作原理,但是当我尝试分配给结构中的变量时,我收到了警告。
我尝试做的示例
struct book
{
int num;
char* book_name;
}*bookcase;
void addbook(void)
{
char buff[20];
gets(buff);
bookcase->book_name = ( char *)malloc(strlen(buff));
strcpy(bookcase->book_name,buff);
}
抱歉这个问题感觉很愚蠢,不幸的是我无法理解这个问题, 任何帮助,将不胜感激。谢谢。
【问题讨论】:
-
在你理解Why gets() is so dangerous it should never be used!之前,甚至不要移动到动态分配中,在C中,没有必要强制转换
malloc的返回,这是不必要的。见:Do I cast the result of malloc? -
发布用于
gets(buff);的输入
标签: c malloc dynamic-memory-allocation