Ham*_*aya 2 c c++ embedded gcc g++
我正在使用C++作为中间语言的avr玩具语言,问题是avr-gcc没有新的实现.我的所有对象都来自Object类,它具有虚拟方法,当我使用malloc使用malloc创建一个浮动对象时,
我可以在不使用new的情况下在C++中实现Factory Method模式吗?
一旦我将它转换为一个Object来传递给Float我的程序崩溃了,答案中的评论说这是由于vtable没有正确初始化,所以如何创建一个c ++对象而不使用new并拥有vtable设置正确吗?
似乎new
支持一种语言结构,但是operator new
没有实现作为其基础并进行实际分配的代码.
通过operator new
在源代码中提供自己的实现来解决这个问题应该很容易:
在某些头文件中包含在任何需要的文件中 new
#include <stdlib.h>
void * operator new(size_t size);
void operator delete(void * ptr);
Run Code Online (Sandbox Code Playgroud)
在单个cpp文件中.
void * operator new(size_t size)
{
return malloc(size);
}
void operator delete(void * ptr)
{
free(ptr);
}
Run Code Online (Sandbox Code Playgroud)
来源:avrfreaks.net上的这篇文章,其中还包含您可能想要/需要自己实施的其他一些内容的信息.
归档时间: |
|
查看次数: |
3834 次 |
最近记录: |