我可以在不使用new的情况下在C中实现Factory Method模式吗?

我在嵌入式环境(Arduino / AVR ATMega328)中工作,并希望在C中实现Factory Method模式.但是,我正在使用的编译器(avr- gcc)不支持new关键字.有没有办法在不使用新的情况下实现这种模式?

解决方法

由于AVR编译器基于gcc编译器,因此很可能支持new关键字.你得到的错误究竟是什么?我猜它是一个未定义函数链接/编译器错误,即operator new. new运算符和operator new之间存在差异,第一个用于创建对象,后者用于为对象分配内存. new运算符为正在创建的对象类型调用operator new,然后初始化对象的v-table并调用对象的构造函数. Reading this FAQ它说标准库中没有定义operator new.这很容易解决,只需定义一个
void *operator new (size_t size)
{
  return some allocated memory big enough to hold size bytes
}

你还需要定义一个删除

void operator delete (void *memory)
{
   free the memory
}

唯一要添加的是内存管理,内存块的分配和释放.这可以简单地完成,小心不要破坏任何现有的已分配内存(代码,静态/全局数据,堆栈).您应该定义两个符号 – 一个用于空闲内存的开始,另一个用于空闲内存的结束.您可以动态分配和释放此区域中的任何内存块.您需要自己管理这个内存.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...