I'm trying to implement a unique_ptr class in C , but how to know if the pointer we passed to it was allocated with new or new[] without using default_delete (my school standard doesn't allow c 11).
I mean when you pass your pointer to the constructor like this for example:
unique_ptr<int> ptr(new int[10]);
how do you know inside of the class if you need to call delete[] or delete ?
CodePudding user response:
You can't tell. And neither can std::unique_ptr.
Think about it. If it could be determined automatically, you wouldn't need two kinds of delete.
std::unique_ptr<int> ptr(new int[10]); is wrong, since it will try to call delete, rather than delete[].
