boo*_*oom 7 c malloc memory-management
这是为char*分配内存的正确方法吗?
char* sides ="5";
char* tempSides;
tempSides = (char*)malloc(strlen(inSides) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
Cla*_*diu 16
几乎.字符串以NULL结尾,因此您可能希望分配一个额外的字节来存储NULL字节.也就是说,即使sides长度为1个字符,它实际上也是2个字节:{ 5,'\0'}.
所以它会是:
tempSides = (char *)malloc((strlen(sides)+1)*sizeof(char));
Run Code Online (Sandbox Code Playgroud)
如果你想复制它:
strcpy(tempSides, sides);
Run Code Online (Sandbox Code Playgroud)
注意:
char *;那就是:
char *tempSides = malloc(strlen(inSides) + 1);
Run Code Online (Sandbox Code Playgroud)
不过,如果你想复制内容inSides,你可以使用strdup,例如:
char *tempSides = strdup(inSides);
if (tempSides != NULL) {
// do whatever you want...
free(tempSides);
}
Run Code Online (Sandbox Code Playgroud)