C中的某内存分配技巧
先来看这样一个结构体:
struct sss{ int strlen; char strbuf[1]; }
可以这样分配内存给这个结构体:
char * name = "hello world!"; struct sss *s_t = (struct sss*) malloc(sizeof(struct sss) - 1 + strlen(sss)+1);
然后这样赋值:
s_t->strlen = strlen(name);
strcpy(s_t->strbuf, name);
这样做的好处是结构体内存和字符串内存在同一块。
可以直接一次释放:
free(s_t);