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

前端之家收集整理的这篇文章主要介绍了我可以在不使用new的情况下在C中实现Factory Method模式吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
我在嵌入式环境(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&C++相关文章