有关于 在嵌入式里面 使用 C++ 有几个问题 我想先注解一下, 当然这都是个人观点 不一定正确
1. 内存分配, new , delete
在 单片机的堆上分配内存,毕竟不同于在32位的PC上, 所以即便是使用了动态分配,也要注意分配容量的大小,
个人觉得 除非有必要,不推荐 使用动态分配内存功能,尤其是在频繁被调用的函数中
我在 MString库的i定义 都是使用模板的 ,template <u16 N>
class MString : public MCharStr
{
private:
u16 Len;
char Data[N];
public:
……
};
typedef MString<63> MyString;
typedef MString<255> LongString;
typedef MString<20> ShortString;
typedef ShortString String ;
typedef MyString AnsiString;
一般对LCD显示也好 串口数据也好 ,20字节的长度几乎都够了
使用过程中 ,判断最大长度,并做一些 对超出长度的异常捕获
如果有需要 可以在设大些
我觉得无论 从执行效率还是 可靠性来说 ,都优于在对象实现时候动态分配
只不过 可能 在空间上有所浪费
|