【发布时间】:2013-12-29 19:31:56
【问题描述】:
我想知道下面这段代码,它非常简单,但是:
char* foo()
{
int i;
char buff[100];
snprintf(buff,100,"This is now written in the stack allocated memory!");
return buff;
}
现在,buff 被分配在函数的堆栈中,这意味着每个变量都在 释放了,而我们所拥有的是内存泄漏。 但是在已经写好的位置到底发生了什么?
这些行还是写在内存里的,不是吗?
-
我可以读取那段内存吗?我确实有指向段开头的指针,如果是这样,它会是这样的:
char* bar = foo(); char foobar = bar[0]; -
我可以写信到那个特定的位置吗?类似的例子:
char* bar = foo(); bar[1] = 'i'; - 一般来说,为什么它被认为是内存泄漏?我们不能重新分配这个位置吗?
希望得到有关此问题的澄清!
【问题讨论】:
-
内存泄漏是指您分配内存而没有再次释放它,这将导致您最终耗尽内存。
标签: c++ c memory-leaks heap-memory stack-memory