//...
LPBYTE lpByte = new BYTE[8];
为什么用
delete lpByte;
和
delete []lpByte;
都能成功运行?
应该用什么?是不是简单数据类型就可以delete和delete[]混用?
LPBYTE lpByte = new BYTE[8];
为什么用
delete lpByte;
和
delete []lpByte;
都能成功运行?
应该用什么?是不是简单数据类型就可以delete和delete[]混用?
解决方案 »
- 初学DLL,需要多次使用导出函数,但是有些语句只能执行一次,有些问题望解答
- 在对话框上根据设置最多显示36个窗口在实现中遇到问题,请指点
- 如何在播放的视频上加上自己的文字
- ShellExecute 的问题,打开WEB,如何自动输入用户名和密码?
- 初到此处,请教一个radio问题!
- 再次求救!!!!!!!!!!!!!很急!!!!!
- 我将dataGrid与记录集榜定,m_dataGrid.SetRefDataSource((LPUNKNOWN)pRs),我想在dataGrid中修改,并诸行提交到数据库却不行,请指点,
- 谁能帮我?AppendChunk向数据库写二进制数据,每个数据两字节
- !!!!如何使用事件接口(出接口)???
- vc程序出现异常:This application has requested the Runtime to terminate it in an unusual way
- 文档与视图
- 老问题了:表中有TreeID,TreeName,如何让tree控件的item显示TreeName,同时点击每个item能返回TreeID字段!!!
for(int i=0; i<1000; i++)
{
BYTE* pBuffer = new BYTE[1024*1024];
delete pByte;
}
并没有发现任何的内存泄漏但是这样用不好,如果是CString* pString = new CString[2];
你调用delete pString会报错的,所以建议还是养成好习惯用delete[]
void main(void)
{
const int max = 100000;
for (int i=0; i++<ma;)
{
DWORD* lpByte = new DWORD[8];
delete lpByte;
}
}
而且,调试没有发现内存损漏!用F5调试的结果如下:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
The thread 0x6B0 has exited with code 100000 (0x186A0).
The program 'd:\Guest\VCPro\Test\Debug\Test.exe' has exited with code 100000 (0x186A0).线程0x6b0的退出代码会等于max 但是多运行几次后就出现错误max == 1000000的情况下也成功了一次 第二次出错
看来他的行为似乎是不确定的。
但这于C++语义上是不正确的,并且在其它大多数的编译器上都是有问题的,所以最好不要这样用。
虽然不出错,但
delete lpByte会造成内存泄漏。