请问这会泄漏内存:
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: