CCLuaStack::executeScriptFile 非android平台内存泄露

版本号:quick-cocos2dx-2.2.5 release

CCLuaStack::executeScriptFile 非android平台存在内存泄露:

std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(filename);
unsigned long chunkSize = 0;
unsigned char chunk = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), “rb”, &chunkSize);
// 使用getFileData返回chunk没有被释放,函数就直接return了
if (lua_loadbuffer(m_state, (const char
)chunk, (int)chunkSize, fullPath.c_str()) == 0)
{
return executeFunction(0);
}
return 0;

3q 我们马上改

怎么改啊 改好了吗 想看一眼

已经递交了PR,正等待合并。你可以去看一下是怎么修改的。
https://github.com/chukong/quick-cocos2d-x/pull/411

CCFileUtils::sharedFileUtils()->getFileData() 返回的指针不是应该用delete]删除吗?

int CCLuaStack::executeScriptFile(const char *filename)
{
CCAssert(filename, “CCLuaStack::executeScriptFile() - invalid filename”);
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(filename);
unsigned long chunkSize = 0;
unsigned char chunk = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), “rb”, &chunkSize);
int rn = 0;
if (chunk) {
if (lua_loadbuffer(m_state, (const char
)chunk, (int)chunkSize, fullPath.c_str()) == 0) {
rn = executeFunction(0);
}
delete chunk;
}
return rn;
}

char*这一类用delete和delete]效果是一样的