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);

 

 

posted @ 2013-05-28 22:13  Richard Zhong  阅读(157)  评论(0编辑  收藏  举报