c++ - Atmel Studio 6 没有适用于 C++ 的 new 和 delete 运算符

标签 c++ avr atmel

我正在使用带有 Atmel Studio 6 的 ATMega32 uc。 我有一些包含 new 运算符的代码。 当我尝试使用它时,它说它未定义,我不知道为什么。

我在 Google 上搜索了一些东西,但我还没有找到任何相关的东西。我所能找到的只是定义 newdelete 运算符的代码片段,但我真的不想这样工作。 nullptr 也丢失了。

还有其他解决方案吗?

最佳答案

在嵌入式情况下使用动态内存管理是完全可能的——您只需要小心操作即可。在这种情况下,使用 malloc()free() 可能更容易,但为了提高兼容性,您可能希望将它们定义为 new删除。关于该主题的良好信息来源位于 AVR Freaks。 .

这些运算符不存在的原因很简单,AVR-GCC 不完全支持 C++,只是部分支持。这部分是由于嵌入式编程的性质——一些更高级的 C++ 功能可以快速消耗闪存和 RAM。嵌入式平台上的 C 与 C++ 争论是一个古老且经常激烈的争论,但通常归结为情况。这是另一个 another forum topic关于这个问题。

关于c++ - Atmel Studio 6 没有适用于 C++ 的 new 和 delete 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244822/

相关文章:

assembly - 汇编中定时器的问题 [ATmega8]

c++ - 如何在 crypto++ 库的 AES 中找到添加轮 key 和混合列代码

c++ - 如何在 C++ 中将声明为 double 的变量输出到文本文件

c - 没有 malloc AVR 的共享指针

c - 仅将指轮数据发送到串行一次

c - 16 位定时器 PWM LED 调光器

c++ - const 模板参数在创建后不保留 const-ness

c++ - 如果程序的一部分表现出未定义的行为,它会影响程序的其余部分吗?

c++ - avr-g++ 使用 c++ 代码生成错误

c - Atmel 工作室无法将 char 数组作为字符串发送