Typecasting malloc C++

use*_*561 5 c c++ malloc casting

我有一些带有malloc语句的C代码,我想与一些C++代码合并.

我想知道什么时候以及为什么要在C++中使用malloc neccessary进行类型转换?

例如:

char *str = (char*)malloc(strlen(argv[1]) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 17

何时以及为什么要在C++中对malloc必要进行类型转换?

总是在没有分配给a时void *,因为void *它没有隐式转换为其他指针类型,它在C中的方式.但真正的答案是你不应该malloc首先在C++使用.


我不是建议你应该用new而不是malloc.现代C++代码应该new谨慎使用,或者尽可能完全避免使用它.你应该隐藏所有使用new或使用非原始类型(如std::vectorXeo所提到的).由于我的经验有限,我不太有资格在这方面给出建议,但这篇文章以及搜索"C++避免新的"应该会有所帮助.然后你会想看看:

  • @Inisheer它是,但是通过删除它我会觉得很烦人. (4认同)
  • @Inisheer:它不仅强大,而且是正确的事情. (3认同)