请问这会泄漏内存:

std::string GetStringFromUser(std::string sPrompt, int nMaxBuffSize)
{
    int i, ch;
    char *psBuffer = (char *) _alloca(nMaxBuffSize);
    fprintf(stderr, "%s", sPrompt.c_str());
    fflush(stderr);
    for (i = 0; (i < nMaxBuffSize) && ((ch = getchar()) != EOF) && (ch != '\n'); i++)
    {
        psBuffer[i] = (char) ch;
    }
    psBuffer[i] = '\0';
    return (std::string) psBuffer;

} // GetStringFromUser()

由我的优胜者之一撰写,但似乎psBuffer永远不会被删除。

最佳答案

不,此函数没有内存泄漏,使用alloca不会在分配给堆栈时引起内存泄漏。从http://www.gnu.org/software/libc/manual/html_mono/libc.html#Variable-Size-Automatic:

10-08 06:37