Typecasting malloc C++

This question already has an answer here:

  • Do I cast the result of malloc? 27 answers

  • when and why is typecasting a call to malloc neccessary in C++?

    Always when not assigning to a void * , since void * doesn't convert implicitly to other pointer types, the way it does in C. But the true answer is you shouldn't ever use malloc in C++ in the first place.


    I am not suggesting you should use new instead of malloc . Modern C++ code should use new sparingly, or avoid it altogether if possible. You should hide all use of new or use non-primitive types (like std::vector mentioned by Xeo). I'm not really qualified to give advice in this direction due to my limited experience but this article along with searching for "C++ avoid new" should help. Then you'll want to look into:

  • std::alocator
  • Smart pointers

  • Compile your C library. Compile your C++ library. Make them play nice in whatever "main" program that uses them. Point is if your maintaining a mixed code base, you probably want to isolate the pure C stuff from the C++ stuff. Otherwise your C stuff turns into C++ stuff that only looks like C.


    First, in almost all circumstances just don't use malloc in a C++ program, but prefer new instead because it will make sure that constructors are called when needed, etc.

    However if for legacy reasons you're trying to avoid as much rewrite as possible - you'll need to cast any malloc call that's not assigned to a void* pointer.

    链接地址: http://www.djcxy.com/p/28424.html

    上一篇: Malloc在malloc之前没有进行类型转换

    下一篇: 类型malloc C ++