c - 避免为格式化路径分配内存

标签 c memory path

<分区>

我想避免内存分配来构 build 备路径

    char *device;
    const char *p;
    char buf[PATH_MAX];

女巫法就是少用内存

PATH_MAX

    snprintf(buf, sizeof(buf) - 1, "/dev/%s", p);
    device = &buf[0];

asprintf

    asprintf(&device, "/dev/%s", p);

最佳答案

asprintf 动态分配所需的内存,而第一个方法在堆栈上声明(可能)更大的缓冲区。因此 asprintf 使用所需的字节数,而 char buf[MAX] 则不使用。但是你必须确保自己释放在 asprintf 中分配的内存

关于c - 避免为格式化路径分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780540/

相关文章:

c - main{} 括号上的语法错误, "expected while"?

memory - 固定内存 OpenCL,有人成功使用过吗?

c - 两个函数同时执行

c - 扫描整数的基本 while 循环

c - 获取 ext3 和其他文件系统的类似 nfsstat 的统计信息

c - 这个 Valgrind 警告是什么意思? - 警告设置地址范围权限

C++ 基于栈的对象分配

c - 为 RegSetValueEx() 生成正确的路径

android - 您应该如何使用带有 PathShape 的 ShapeDrawable 在自定义 View 上绘制线条?

python - 将 conda 添加到我的环境变量或路径?