使用malloc为字符串分配内存(c ++源代码)

我正在尝试创建一个结构数组,我已经完成了,我必须从用户那里收到一个输入。 第一条数据是描述(字符串)。 我也必须为它分配内存。 我不是因为它要进行检查所以要检查的字符串有多大,但我认为我没有正确设置它。 任何人都可以给我一个提示或一个我可以看到的页面来弄明白吗?

非常感激。 以下是代码的重要内容:

struct myExpenses { char *description; float cost; }; int main (void) { struct myExpenses *pData = NULL; struct myExpenses expenses[60]; int exit=0; int i = 0; char buffer[81] = ""; printf("Please enter all your descriptions:\n"); for (i=0;i < 60; i++) { fgets(buffer,stdin); expenses[i].description=(char *)malloc sizeof(buffer); } 

您可以使用strdup而不是使用malloc()来自动为您分配正确大小的缓冲区。

 expenses[i].description = strdup( buffer ); 

除了你错过了malloc调用周围的一对括号而没有真正告诉问题是什么,你只需分配内存但不要复制字符串。 它可以在一个函数调用中完成,而不是使用strdup函数:

 printf("Please enter all your descriptions:\n"); for (i=0;i < 60; i++) { fgets(buffer,stdin); expenses[i].description=strdup(buffer); } 

记得在完成所有描述后free拨打电话,否则会有内存泄漏。

编辑如何在给定示例中使用free

 for (i = 0; i < 60; i++) free(expenses[i].description);