C++ C++;动态强制转换指针的内存清理

C++ C++;动态强制转换指针的内存清理,c++,pointers,dynamic-cast,C++,Pointers,Dynamic Cast,我试过在谷歌上搜索,但没有找到一个简单问题的直接答案,这个问题涉及清理动态铸造指针的内存 你是否需要释放/清除一个C++中动态转换的指针,或者是由编译器自动清理的指针? e、 g BaseType*obj; DerivedType*mrPointer=动态强制转换(obj); //代码发生在这里 //最后介绍了mrPointer的使用 mrPointer=nullptr//这是否有必要/是否有更合适的清理方法? 提前感谢不确定您的顾虑, 但在您的示例行中: mrPointer = nullpt

我试过在谷歌上搜索,但没有找到一个简单问题的直接答案,这个问题涉及清理动态铸造指针的内存

你是否需要释放/清除一个C++中动态转换的指针,或者是由编译器自动清理的指针? e、 g

BaseType*obj;
DerivedType*mrPointer=动态强制转换(obj);
//代码发生在这里
//最后介绍了mrPointer的使用
mrPointer=nullptr//这是否有必要/是否有更合适的清理方法?

提前感谢

不确定您的顾虑,
但在您的示例行中:

mrPointer = nullptr;
除了将
nullptr
分配给
mrPointer
之外,不执行任何操作,此处不需要

请更好地使用
std::shared\u ptr
它将帮助您管理内存。

要转换
shared\u ptr
请使用
std::static\u pointer\u cast
std::dynamic\u pointer\u cast
std::const\u pointer\u cast
不确定您的顾虑,
但在您的示例行中:

mrPointer = nullptr;
除了将
nullptr
分配给
mrPointer
之外,不执行任何操作,此处不需要

请更好地使用
std::shared\u ptr
它将帮助您管理内存。

要转换
shared\u ptr
请使用
std::static\u pointer\u cast
std::dynamic\u pointer\u cast
std::const\u pointer\u cast

如果您想释放不再使用的资源,例如指针指向的对象,在您的例子中是动态转换的,或者使用
delete
操作符并将不再使用的指针放在其后面,即:

delete mrPointer;
您可以使用智能指针,例如,在特定情况下,其对象将被销毁,其内存将自动释放

若您的指针在其整个生命周期内只拥有一个您可以使用的对象,那个么这将再次为您提供资源管理


注:
动态强制转换用于将原始内存地址解释为特定类型,并且不应影响您对内存资源管理的看法,即指针指向的内存在不再需要时应该是空闲的,无论指针指向的是已知类型的内存还是您让它解释的类型,使用。

如果您想释放不再使用的资源,例如指针指向的对象,在您的情况下,动态强制转换,您可以使用
删除
操作符并将不再使用的指针放在它后面,即:

delete mrPointer;
您可以使用智能指针,例如,在特定情况下,其对象将被销毁,其内存将自动释放

若您的指针在其整个生命周期内只拥有一个您可以使用的对象,那个么这将再次为您提供资源管理


注:
动态强制转换用于将原始内存地址解释为特定类型,并且不应影响您对内存资源管理的看法,即指针指向的内存在不再需要时应该是空闲的,无论指针指向的是已知类型的内存还是您让它解释的类型,使用。

您不需要释放指针;释放指针指向的对象。用“new”关键字声明的实际对象,对吗?必须在这些上使用delete。但是如果OBJ只是指向真正的OBJ位置,那么所有这些指针(在本例中)都不必是空闲的。在这段代码中,您不需要释放任何以前分配的内存。指针只是一个数字,一个带有内存地址的记录。因此,将null赋值给指针只会重写该数字,使指针指向的内存保持不变,但可能无法访问(您不再知道地址)。Dynamic cast也不分配内存,它只允许重新解释与“对象”对应的已分配内存块。是的,我意识到我只是对普通指针和动态指针感到困惑,谢谢!强制转换与内存分配无关—您不释放指针;释放指针指向的对象。用“new”关键字声明的实际对象,对吗?必须在这些上使用delete。但是如果OBJ只是指向真正的OBJ位置,那么所有这些指针(在本例中)都不必是空闲的。在这段代码中,您不需要释放任何以前分配的内存。指针只是一个数字,一个带有内存地址的记录。因此,将null赋值给指针只会重写该数字,使指针指向的内存保持不变,但可能无法访问(您不再知道地址)。Dynamic cast也不分配内存,它只允许重新解释与“对象”对应的已分配内存块。是的,我意识到我只是对普通指针和动态指针感到困惑,谢谢!强制转换与内存分配无关