c++ - 使用 malloc 初始化一个类

标签 c++ c gcc embedded g++

我正在使用 C++ 作为中间语言为 avr 开发一种玩具语言,问题是 avr-gcc 没有新的实现。我的所有对象都派生自类 Object,当我使用来自的指令创建一个带有 malloc 的浮点对象时,它具有虚拟方法,

Can I implement the Factory Method pattern in C++ without using new?

一旦我将它转换为对象传递并返回到 Float,我的程序就会崩溃,答案中的评论说这是由于 vtable 未正确初始化,所以我如何在不使用 new 的情况下创建 C++ 对象并正确设置 vtable?

最佳答案

似乎支持 new 作为一种语言结构,但是作为其基础并进行实际分配的 operator new 代码并未实现。

通过在您的源代码中为 operator new 提供您自己的实现来解决这个问题应该很容易:

在任何需要 new

的文件中包含的一些头文件中
#include <stdlib.h> 

void * operator new(size_t size); 
void operator delete(void * ptr);

在单个 cpp 文件中。

void * operator new(size_t size) 
{ 
  return malloc(size); 
} 

void operator delete(void * ptr) 
{ 
  free(ptr); 
} 

来源:this post在 avrfreaks.net 上,其中还包含有关您可能想要/需要自己实现的其他一些内容的信息。

关于c++ - 使用 malloc 初始化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613982/

相关文章:

c++ - 输出随机数

c++ - 如何在 MPI 中创建新类型

c - 破坏红色区域的内联汇编

c - RUN FAILED 退出值 -1 073 741 819 - 我的代码有什么问题?

iphone - GCC 4.2.1 darwin 避免重复符号

c++ - 在 Xcode 中静态链接 Nvidia 的 Cg 框架

c++ - 将本地字符串参数作为对 const 的引用传递到 constexpr 函数中?为什么这是合法的?

c++ - 从 C++ 中的函数重新调整多个 vector ?

c - 8个谜题解决的OpenGL过剩动画

c - 在结构中初始化一个数组