c++ - 我需要删除析构函数中的基本数据类型吗? C++

标签 c++ memory int destructor

如果我有一个看起来像这样的类:

class SomeClass {
    public:
        SomeClass(int size) {
                     arr = new int[size];
                     someInt = size / 10;
                    };
        ~SomeClass() {
                      delete [] arr;
                      //do I need to somehow delete the int value 'someInt'?
                     };
    private:
        int *arr; //pointer to dynamically allocated array
        int someInt;
}

究竟应该在析构函数中包含什么以避免内存泄漏?

我知道我需要删除数组,因为它是动态分配的,但我需要对 int 值或其他基本数据类型做任何事情吗?

谢谢, 乔纳森

最佳答案

没有。

但不仅限于基本类型。对于您没有使用 new 分配的任何内容,您不必调用 delete即使是指针

delete 与成员变量类型(somehow)无关。重要的是您是否在构造函数中(或在类方法中的其他位置)分配它(使用new)。

经验法则是

Have as many delete as new
Have as many delete[] as new[].

当然,有时你必须删除一些你没有分配但指向它是否不再需要的东西(由其他人分配,但你是唯一使用它的人)。

当然,有时您必须 删除分配但其他人指向的东西(由您分配但其他人正在使用它)。

关于c++ - 我需要删除析构函数中的基本数据类型吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090936/

相关文章:

C++整理负输出

c - 如何在c中将char数组元素转换为int以及其他方式?

java - 获取 int 中使用的位长度

swift - Int 和 Uint8 swift 之间的区别

c++ - 不能在函数中声明运算符。 Clang错误或规范?

c++ - vscode "No refactoring available"c++,(带 arduino 扩展)

c++ - 使用 cxxtest 框架和 valgrind 测试 qt 对象

Perl 和进程管理

c - 字节打印和写入

c++ - 类析构函数和指针释放