求助:cocos2dx/C++代码块执行完后,报对象的signal SIGABRT错误

求助大神,我以下代码,运行到最后一行后,跳回linkRequestModel行,并报错(thread: signal SIGABRT)错误,求大神帮看看:
void AppManager::sendLinkRequestMessage()
{

LinkRequestModel *linkRequestModel = new LinkRequestModel();

///消息类型
linkRequestModel->setMessageType(StringFormator::intChangeToString(kKPSocketMessageTypeLinkRequest));

///设备唯一标识
linkRequestModel->setDeviceUUID(getDeviceUUID());
linkRequestModel->setDeviceINFO("");
linkRequestModel->setSystemINFO("");
linkRequestModel->setSysVersion("");

///授权标识
linkRequestModel->setToken("");

///用户ID
linkRequestModel->setUserID("-1");

///时间戳
time_t timep;

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
time(&timep);
#else
struct timeval tv;
gettimeofday(&tv, NULL);
timep = tv.tv_sec;
#endif
char intCharArray[sizeof(long)];
sprintf(intCharArray, “%ld”, timep);
std::string timeStampString(intCharArray);
linkRequestModel->setTimeStamp(timeStampString);

///设备类型
linkRequestModel->setPlatformType(getDevicePlatform());

///位置信息
linkRequestModel->setLocalINFO("测试连接请求信息");

///发送消息
linkRequestModel->initRapidJSONBuffer();
std::string sendMessageString(linkRequestModel->getJSONString());
char *sendMessageBuf = (char *)sendMessageString.c_str();
KPSocketManager::shareSocketManager()->getSocketClient()->sendMessage(sendMessageBuf, (int)strlen(sendMessageBuf));
KPSocketManager::shareSocketManager()->getSocketClient()->writeAndFlush();

}

图片:

从你的截图来看,崩溃在这句

LinkRequestModel *linkRequestModel = new LinkRequestModel();

那么你应该去查这个函数啊。

是的,过程是对象初始化之后,所有代码都执行完了,消息也发送出去了,最后又跳回这里报的错,不知道怎么回事,还麻烦指导下。

你正确释放了吗?看看是不是析构的事

谢谢大神,我的构造函数和析构函数,如下,还请帮忙看看
LinkRequestModel::LinkRequestModel()
{

///设置默认的属性值
_deviceUUID = *new std::string("");
_deviceINFO = *new std::string("");
_systemINFO = *new std::string("");
_sysVerion = *new std::string("");
_localINFO = *new std::string("");
_jsonString = *new std::string("");
CCLOG("::::::::::LinkRequestModel构造函数");

}

LinkRequestModel::~LinkRequestModel()
{

_deviceUUID = nullptr;
_deviceINFO = nullptr;
_systemINFO = nullptr;
_sysVerion= nullptr;
_localINFO = nullptr;
_jsonString = nullptr;

}

兄弟,我感觉你怎么不会c++的样子,以你发来的代码看,你的linkRequestModel这个对象根本就不会触发析构函数,你这代码貌似写的完全不对吧。而且根据你目前的语法看 你声明的一系列的属性根本就不是指针类型,既然不是指针为什么要用new呢,诶,不知道怎么帮你了

是的,初学,初学
构造函数是跑了,我上面打印的也出来了, 我现在不初始化属性看一下,谢谢大神。
大神要帮我们小菜吖。

不是大神。。你的构造肯定跑了,但是析构没跑,如果你的成员变量不是指针,那你就不用单独写析构,兄弟看清楚我说的是析构,不是构造

@49427823 虽然我看不出具体出错在哪里,但是从贴的代码里有几个问题

从你的析构函数来看,_deviceUUID是个指针,指针为什么用可以这样赋值呢?_deviceINFO = *new std::string(""),应该是 _deviceINFO = new std::string("")才对吧。 而且从语义来看,这里应该没必要用指针。

这样没有释放_deviceUUID等变量的内存,而是要

delete _deviceUUID;
_deviceUUID = nullptr;

_deviceUUID 一看就不是指针,不然*new std::string(""); 这样的语法是编译不过去的,她的问题应该就是在析构的时候出现的问题

谢谢您的回复,我解决了

谢谢指点,我也回去再看了一下基础知识,初学者。

谢谢大家的帮忙,终于解决了,就是上面这个长整形转为字符串的时候,越界了。sizeof(long)得到的长度不足,后来我手动改为char[64]解决了问题。再次谢谢大家帮忙。