使用 1.6.2 为什么我可以使用
byte data[100000000];
如果我没记错以前的版本,我会收到错误,因为 RAM 有限。我认为更正确的方法是
byte* data=new byte[10000];
if (data!=NULL) ...
对不起,基本的 C/C++ 问题
使用 1.6.2 为什么我可以使用
byte data[100000000];
如果我没记错以前的版本,我会收到错误,因为 RAM 有限。我认为更正确的方法是
byte* data=new byte[10000];
if (data!=NULL) ...
对不起,基本的 C/C++ 问题
如果在函数或方法中添加第一个代码,它会在运行时从堆栈中分配。这就是链接器不会警告您的原因。如果将其添加为全局变量(外部方法和类),则会发生错误。虽然“new”运算符有时在 Movesense 中有效,但它不是分配内存的推荐方式。内存分配例程在movesense.h文件中声明:
void* memalloc(size_t size);
void* memcalloc(size_t size);
void memfree(void* ptr);
然而,有一个更简单的方法。由于用户LaunchableModules是从 Movesense HEAP 分配的,因此您只需将所需的任何固定大小的缓冲区声明为类成员,它们将在 LaunchableModule 实例化时自动分配。尽管在传感器运行时查询空闲内存是个好主意,但在向模块添加大缓冲区分配之前,这样您就不会因为传感器耗尽 HEAP 而导致每次尝试启动时都会不断重置传感器。