tmpString = (char*)malloc((strlen(name) + 1) * sizeof(char));
tmpString = (char )malloc((strlen(name) + 1) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
这两行之间有什么区别?
我的理解是第二行是错误的,但由于某种原因,编译器什么也没说.
第一行转换(void)指针,malloc返回指向char的指针,从而保留其指针.所有它告诉编译器"位置X的内存应该被视为字符数组".
第二个转换将malloc返回的指针转换为单个字符.由于多种原因,这很糟糕:
我认为警告级别设置得足够高的编译器应警告第二次分配.