gpt4 book ai didi

c - malloc 后释放内存

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:55 25 4
gpt4 key购买 nike

我有一些代码:

char * itoa(int a)
{
char (*t)[16]=(char(*)[16])malloc(1*sizeof(char[16]));
sprintf(*t,"%d",a);
return *t;
}
// ...
mvwprintw(my_menu_win,i+1,2,itoa(i));

我可以在不添加临时变量的情况下从 malloc 中释放内存吗?例如:

temp=itoa(i);
mvwprintw(my_menu_win,i+1,2,temp);
free(temp);

最佳答案

您不应该对范围受限的缓冲区使用 malloc

从 C99 开始,复合文字对于您可能希望保留一段时间的缓冲区的情况是一个很好的解决方案。我会去做类似的事情

char const* itoa(int a, char (*buffer)[16]) {
sprintf(*buffer,"%d",a);
return *buffer;
}

#define ITOA(A) itoa((A), &(char[16]){ 0 })

指向函数数组的指针确保传递一个包含 16 元素的缓冲区。

关于c - malloc 后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com