繁体   English   中英

使用malloc为字符串分配内存(C ++源)

[英]Using malloc to allocate memory for a string (c++ source)

我正在尝试创建一个结构数组,我已经完成了这个工作,而且我必须接收用户的输入。 第一条数据将是描述(字符串)。 我也必须为其分配内存。 我不是想输入的字符串有多大,但是我认为我没有正确设置它。 谁能给我提示或我可以查看的页面以找出答案?

不胜感激。 以下是重要的代码片段:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM