c++ - 编译c++程序的内存分配代码时出错

标签 c++

我正在用 C++ 编写内存分配程序,但程序中出现错误。
我不明白发生了什么。
请帮忙。

#include<iostream>
using namespace std;

class Test{
    int *m_ptr;
    private:
        void Test(){
            m_ptr = new int(4);
        }
        ~Test(class Test){
            cout<<"Object gets destroyed..";
        }
};

int main(){
    Test *ptr = new Test();
    delete [] ptr;
}

我也是 C++ 新手

最佳答案

private:
    void Test(){
        m_ptr = new int(4);
    }

应该
public:
    Test(){
        m_ptr = new int(4);
    }

构造函数没有返回类型,如果你想在 main 中使用它它应该是公开的。


    ~Test(class Test){
        cout<<"Object gets destroyed..";
    }

应该
    ~Test(){
        cout<<"Object gets destroyed..";
    }

析构函数没有参数,它们应该(几乎总是)是公共(public)的。


delete [] ptr;

应该
delete ptr;

如果您使用 new 分配然后你用 delete 解除分配.仅当您使用 new[] 进行分配时你用 delete[] 解除分配吗? .

在一个非常小的程序中有很多基本的语法错误。无论您正在寻找什么资源来学习 C++ 程序的结构,都不是很好。在进行内存分配(这是一个非常复杂的主题)之前,可能值得花一些时间练习更简单的主题,

感谢 dvix 和用户帮助我发现代码中的其他问题。

关于c++ - 编译c++程序的内存分配代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62242378/

相关文章:

c++ - 如何使用 boost::format 生成十六进制输出?

c++ - 桌面 SCADA 应用程序 - 通过 C++ 读取和写入 PLC

C++将png资源导出到文件

c++ - libc 中的错误?如何读取转储文件?

c++ - 如何在 OpenGL 中使用 SDL2 软件渲染?

c++ - 使用 webassembly 在浏览器中查询大型数据集

c++ - 无法使 rustc 使用 simd 指令进行包含范围循环

c++ - 当对象超出范围时,C++ 会调用析构函数吗?

c++ - 如何开始在 openGL 和 C++ 中构建 cooliris?

c++ - 使用 if if 语句检查 C++ 中的范围