内存泄漏或C++中的一些其他问题和字符串向量

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)

我的记忆泄漏在哪里?

Jer*_*fin 5

这个:

(uint32_t *)_strdup(words[i].c_str())
Run Code Online (Sandbox Code Playgroud)

...动态分配内存,我没有看到任何匹配free的内存分配.

我会std::string在整个过程中使用.