关于c++ delete的一个有关问题
关于c++ delete的一个问题
不多说,上代码:
编译运行后,cout不执行,换一代机器运行,cout正常输出。调试c++库代码发现,进入delete a后,
程序死在了
F11跟踪进入上面这句,发现最后死在了下面代码的第四句:
有人知道是出了什么问题么
------解决方案--------------------
为什么要在这样严重错误的代码上浪费时间???
------解决方案--------------------
delete a本来就是不合理的,你在考验编译器有多健壮吗?
------解决方案--------------------
你没有new,干嘛去delete?
------解决方案--------------------
并不是有指针就要delete的,用new开辟了新空间,才需要delete
------解决方案--------------------
非要以你的逻辑,你可以这么做
不多说,上代码:
#include<iostream>
using namespace std;
int main(){
int b = 2;
int *a = &b;
delete a;
cout<<"delete success!"<<endl;
return 0;
}
编译运行后,cout不执行,换一代机器运行,cout正常输出。调试c++库代码发现,进入delete a后,
程序死在了
/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
F11跟踪进入上面这句,发现最后死在了下面代码的第四句:
PFNMessageBox dpfnMessageBox=(PFNMessageBox) DecodePointer(pfnMessageBox);
if(dpfnMessageBox)
{
return (dpfnMessageBox)(hWndParent, lpText, lpCaption, uType);
}
有人知道是出了什么问题么
------解决方案--------------------
为什么要在这样严重错误的代码上浪费时间???
------解决方案--------------------
delete a本来就是不合理的,你在考验编译器有多健壮吗?
------解决方案--------------------
你没有new,干嘛去delete?
------解决方案--------------------
并不是有指针就要delete的,用new开辟了新空间,才需要delete
------解决方案--------------------
非要以你的逻辑,你可以这么做
#include<iostream>
using namespace std;
#include <string>
int main(){
char b = 2;
char *a=new char(2);
strcpy(a, &b);
delete a;
cout<<"delete success!"<<endl;
return 0;
}