我对C ++完全陌生。我想询问以下内容。
如果在构造函数中动态分配成员变量。它应该总是在析构函数中删除吗?如果是这样,那么变量的生命周期如何“拉长”?如果没有,那么应该如何处理内存泄漏呢?
我找不到明确解决此问题的任何来源。
答案 0 :(得分:3)
动态分配成员的原因是
但是,正如Alf在评论中指出的那样,最好使用智能指针。这样做的好处是,您不需要在析构函数中明确delete
该成员,并且在shared_ptr
的情况下,您可以根据需要延长生命周期,智能指针需要注意破坏。
答案 1 :(得分:2)
是否应该在析构函数中删除它?
不是必需的 - 如果你确定它不会被进一步使用,你可以在其他功能完成工作后立即释放内存。但是,你必须从析构函数中调用这个破坏例程,以避免内存泄漏。理想情况下,您还需要为function filterTextarea() {
var textarea = document.getElementById('textarea');
var matches = textarea.value.match(<THE REGEX FOR THE WORDS YOU WANT TO FILTER>);
if (matches) {
alert('Hey, no bad words!');
textarea.value = '';
return;
}
// Other stuff.
}
内存提供另一个函数。
简而言之,这一切都取决于你的班级以及你在实施什么。
答案 2 :(得分:1)
让我采取一些后现代的方法并说“你不必再担心它了”
如果只有creation-object是该资源的使用者,则使用unique_ptr
,如果许多对象共享该资源,请使用shared_ptr
。使用STL容器进行所有其他可能的用途。
只有在编写极低级别的内容或从头开始实现容器时才使用new
和delete
。对于所有其他情况,请将动态内存分配(通过malloc
和new
)视为已弃用。