【发布时间】:2014-12-03 18:05:58
【问题描述】:
我有一个 const char * 需要用逗号分隔。因为 strtok 修改了输入字符串,所以我对其进行了复制,并在函数结束时释放分配的内存。
void ApBuilder::addNetworkType(ApDbData::RowIterator &iter)
{
const char * type = iter.getColumnText(ApDbData::AP_IDX_TYPE_80211);
const size_t len = strlen(type);
char * temp = new char[len +1];
strncpy(temp, type, len);
temp[len] = '\0';
temp = strtok(temp, ",");
while(temp != NULL)
{
tmpObject.add(temp, true);
temp = strtok(NULL, ",");
}
jsonObject.add("type80211", tmpObject);
delete[] temp;
}
Valgrind 抱怨我有内存泄漏,尽管我释放了分配的内存。我该如何解决这个泄漏
==17667== 8 bytes in 2 blocks are definitely lost in loss record 1 of 4
==17667== at 0x402ADFC: operator new[](unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==17667== by 0x8049C5D: ApBuilder::addNetworkType(AbstractDbData::RowIterator&) (in /home/***/workspace/projects/jsonBuilder/main)
==17667== by 0x8049A38: ApBuilder::buildApArray() (in /home/***/workspace/projects/jsonBuilder/main)
==17667== by 0x8049679: main (in /home/***/workspace/projects/jsonBuilder/main)
【问题讨论】:
-
可以
jsonObject.add扔吗?
标签: c++ memory-leaks valgrind