我正在使用delete
中的C++
关键字解决与指针指向的内存解除分配相关的在线练习。以下是我的代码。
#include<iostream>
#include<string>
#include<conio.h>
int main()
{
double *ptrDouble = new double;
*ptrDouble = 22;
std::cout << "\nValue of ptrDouble = " << *ptrDouble << std::endl;
delete ptrDouble;
std::cout << "Value of ptrDouble = " << *ptrDouble << std::endl;
getch();
}
所以根据在线网站我正在解决这个问题,
如果在指针上使用delete关键字,则内存将为 取消分配,因此您的内容将无法使用 申请不再。试图访问内容将导致 您的应用程序因内存违规而崩溃。
但是当我在解除内存释放后尝试打印ptrDouble
的值时,程序不会崩溃,而是在控制台上打印垃圾值。
问题是,我做错了什么,或者网站上的程序是否应该崩溃是错误的?
PS。我正在使用 visual studio 2015社区。
答案 0 :(得分:1)
访问释放的内存会导致未定义的行为。崩溃或阅读垃圾都属于这一类。程序是否真的会崩溃取决于该特定的内存块是返回给操作系统还是只是可以重用。