2017-03-17 54 views
1

如何在mbed客户端连接到设备服务器时删除对象及其实例?使用mbed-client上的mbed-client删除LWM2M对象时,应用程序崩溃

目前我有一个类,在构造函数中创建一个对象,我注册它与mbed客户端。我也想在调用析构函数时删除这个对象。我想以下几点:

在构造函数中:

object = M2MInterfaceFactory::create_object(name); 
instance = object->create_object_instance(); 

在析构函数:

object->remove_object_instance(instance->instance_id()); 
// delete object; 

上面的代码工作,但该对象永远不会从内存中删除。

如果我取消注释行来调用对象的析构函数,那么我的应用程序崩溃。我用mbed-trace来查看是否有任何错误消息,但找不到任何东西。 Here是从调用到析构函数的日志输出,直到应用程序崩溃。

我正在使用mbed-os 5.4.1的Nucleo-F401RE。

+0

在删除资源之前,您是否先注销(使用mbed客户端)? –

+0

不,客户端仍在注册。我的意图是在客户端连接时动态地创建和删除对象。 – araad

+0

我敢肯定,根据OMA LwM2M规范,这是不允许的。 –

回答

0

根据我的观察,您必须先取消注册,然后删除界面/资源。

但是,我已经看到,由于某种原因,mbed客户端界面在连续销毁后不能创建超过6次;第七个客户端无法连接到服务器并返回'M2MIvaildParametersError'。如果有人能对此发表评论,我将不胜感激。