Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在析构函数中删除指针和映射_C++ - Fatal编程技术网

C++ 在析构函数中删除指针和映射

C++ 在析构函数中删除指针和映射,c++,C++,假设一个类包含指针和字符串映射。在析构函数中,除了删除指针之外,我们是否还应该清除映射,或者这是自动完成的?如果您有一个成员变量,如std::map(您已经分配了堆栈),那么在类析构函数时,您可以依赖它的析构函数。标准规定,std::map一旦被销毁,将释放其所有内存 如果您将其声明为指针,并且使用了new,则应该在析构函数中使用delete。注意不要在析构函数中抛出任何异常,因为这将导致内存故障。取决于如何声明它当我有一个用户定义类型的指针和一个映射时会发生什么。我是否应该在析构函数中将映射从

假设一个类包含指针和字符串映射。在析构函数中,除了删除指针之外,我们是否还应该清除映射,或者这是自动完成的?

如果您有一个成员变量,如
std::map
(您已经分配了堆栈),那么在类析构函数时,您可以依赖它的析构函数。标准规定,
std::map
一旦被销毁,将释放其所有内存


如果您将其声明为指针,并且使用了
new
,则应该在析构函数中使用
delete
。注意不要在析构函数中抛出任何异常,因为这将导致内存故障。

取决于如何声明它当我有一个用户定义类型的指针和一个映射时会发生什么。我是否应该在析构函数中将映射从指针中释放出来,或者只删除指针就足够了?@mickeyj:最好重新提交一个带有实际类定义的问题。这样,你会得到明确的答案。