c - malloc 后释放内存

标签 c malloc

我有一些代码:

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/

相关文章:

c - 我无法理解PID的内核内部表示

c++ - 我想知道我们使用的ide是否包含链接器

c - 指针算术和 malloc()/calloc() 函数

c - 动态分配结构体数组 C

c - 在词法分析器中打印 union/结构的一部分

C 结构创建错误未命名类型

c++ - 为什么我的程序在打开 mkfifo-ed 管道时挂起?

linux - 我可以使用 malloc 在 mmap 文件上分配内存吗

c++ - 制表符(\t)有多少个空格?

c++ - 重新定义 malloc/free with static linking has multiple definition error