【发布时间】:2013-12-23 16:55:04
【问题描述】:
以下的 C 等价物(使用 malloc)是什么
MyClass* ptr = new MyClass(arg1,arg2);
我首先想到的是在堆栈上实例化一个 MyClass 对象,然后执行 malloc(sizeof(MyClass)); 和 memcpy(stack, to_malloc'd_memory)
有没有更好的方法?
【问题讨论】:
-
C 中没有类——除了 malloc,你还想做什么?只需通过
ptr->... = arg1初始化分配的内存 -
通常,只需调用
calloc()- 这会分配空间并将所有字节设置为零。如果您需要专门设置值,则单独设置字段。 -
引入一个函数
make_my_class,你可以调用它为MyClass *ptr = make_my_class(arg1, arg2); -
之前询问过 - stackoverflow.com/questions/3774193/… 好的做法是使函数类似于构造函数(初始化器),其名称与结构名称相同。