<分区>
我想避免内存分配来构 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);
<分区>
我想避免内存分配来构 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/