1 c++ memory string memory-leaks vector
每次我在循环中运行此函数时,我都会不断出现内存泄漏:
uint32_t *padMessages(uint32_t *messages, const std::vector<std::string> &words)
{
uint32_t output[16];
uint32_t size = words.size();
uint32_t i, x, y;
messages = (uint32_t *)malloc(16 * size * sizeof(uint32_t));
x = 0;
for(i = 0; i < size; i++) {
padMessage((uint32_t *)_strdup(words[i].c_str()), output, strlen((const char *)words[i].c_str()) * 8);
for(y = 0; y < 16; y++) {
messages[x] = output[y];
x++;
}
}
return messages;
}
Run Code Online (Sandbox Code Playgroud)
调用此函数的代码是
do {
for(i=0 ; i<len ; i++)
temp[i] = letters[entry[i]];
temp[len] = '\0';
// store generated word to words vector
words[array_count] = temp;
// increment vector counter and total word count
array_count++;
word_count++;
if(array_count == 100000) {
// reinitialize array_count
array_count = 0;
// pad messages
messages = padMessages(messages, words);
free(messages);
free(result);
std::vector<std::string>().swap(words);
words.resize(100000);
}
for(i=0 ; i<len && ++entry[i] == nbletters; i++) entry[i] = 0;
} while(i<len);
Run Code Online (Sandbox Code Playgroud)
我的记忆泄漏在哪里?
这个:
(uint32_t *)_strdup(words[i].c_str())
Run Code Online (Sandbox Code Playgroud)
...动态分配内存,我没有看到任何匹配free的内存分配.
我会std::string在整个过程中使用.
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |