Malloc and class

Malloc and class

本文关键字:class and Malloc      更新时间:2023-10-16

今天我的一个朋友发给我这个代码,告诉我上面有一个错误,但我不确定它在哪里。有人能帮帮我吗?

class MyClass
{
    int *n;
    MyClass()
    {
        n = new int;
    }
    ~MyClass()
    {
        delete n;
    }
    int main()
    {
        MyClass *c = (MyClass*)malloc(sizeof(MyClass));
        free(c);
    }
}

最大的错误是缺少main功能。它应该在类声明之外

此外,在c++中应该像这样使用new:

MyClass *smth=new MyClass(some_arg);
delete smth;

另一个错误是在类的构造函数和析构函数中引用的未定义变量i。您可能应该使用n

说实在的,如果我是g++或者clang或者clang++之类的,我会优化所有的东西,因为它什么都不做:分配内存然后几乎立即释放它,构造函数和析构函数没有做任何有用的事情,因为变量i 不存在

我不确定你的代码的目标,但修复错误是这样的

#include<stdlib.h>
class  MyClass
{
   int *i;
   MyClass()
   {
       i = new int;
   }
   ~MyClass()
   {
       delete i;
   }
};
int main()
{
    MyClass *c = (MyClass*)malloc(sizeof(MyClass));
    free(c);
}