C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我可以在不使用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 *R_219_11845@emory)
{
   free the memory
}

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

大佬总结

以上是大佬教程为你收集整理的我可以在不使用new的情况下在C中实现Factory Method模式吗?全部内容,希望文章能够帮你解决我可以在不使用new的情况下在C中实现Factory Method模式吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。