哪种方法可以为字符串保留内存?

Bob*_*lan 1 c memory malloc memory-management c-preprocessor

我已经创建了一个宏来为C中的字符串创建保留内存.它看起来像这样:

#define newString(size) (char*)malloc(sizeof(char) + size)
Run Code Online (Sandbox Code Playgroud)

那么我有什么理由不在自己的个人项目中使用这个宏吗?我知道我不应该在生产代码中这样做,因为它需要每个人都有这个头文件,每个人都知道这newString是一个宏.

jld*_*ont 5

(char*)malloc(sizeof(char) * (size+1)) 会更合适(+1是在字符串末尾考虑NULL,如果适用的话).

如果正在复制字符串,strlen()不会考虑终止字符串的NULL,因此需要额外的内存char.

  • +1解释为什么你需要`size + 1` (4认同)