我正在用C++试验“新” - “删除”和内存分配。在下面的程序:删除指针问题
int* getPtrToFive() {
int x =5;
int *y = new int;
y = &x;
return y;
}
int main() {
int *p = getpoint();
cout << *p << endl;
delete p;
}
内getpoint
功能,我创建的堆内存,以确保它指向局部变量x
的地址指针y
将函数执行后返回。然后我想取消分配y
的内存,但是当我删除指针p
时出现main
错误... 您能看到这里出了什么问题吗?提前致谢。
你只能'删除'用'new'创建的内容。 '&x'指向栈上的一个地址。你的意思是写'* y = x;'? –
'delete'只能用于'new' – roottraveller
你正在返回并且是局部变量的地址。未定义的行为 – Raindrop7