同一台机器上,在两个不同的工程中,定义了
typedef CList<CString, CString&> CIpList;
然后进去后,写同样的代码
CIpList *pList = new pCIpList;
delete pList;
pList = NULL;
在一个项目中可以正确运行,但在另一个项目中,即在delete时,总报"Microsoft Visual C++ Debug Library
Debug Assertion failed!
...
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) "之类的信息。PS:指针生成后,没有做任何操作,直接删除,故此可以排除是内存被改写的问题,请问这是否项目设置有关么?
typedef CList<CString, CString&> CIpList;
然后进去后,写同样的代码
CIpList *pList = new pCIpList;
delete pList;
pList = NULL;
在一个项目中可以正确运行,但在另一个项目中,即在delete时,总报"Microsoft Visual C++ Debug Library
Debug Assertion failed!
...
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) "之类的信息。PS:指针生成后,没有做任何操作,直接删除,故此可以排除是内存被改写的问题,请问这是否项目设置有关么?
解决方案 »
- 关于串口通信的小问题
- 怎么读取文件夹中的图片并把缩略图显示在界面上?
- 多个独立的进程,其进程地址是如何确定的?
- 关于设置复杂对话框tab order(按tab键使控件焦点转移)的问题
- 请问如何在一个有控件的对话框内自己绘图?有什么OwnerDraw的控件好用?
- 如何判断一个char为空
- SQLConfigDataSource()问题?
- 那里有电子版的MFC类库下载
- 那位大虾给俺讲讲http://www.csdn.net/Develop/read_article.asp?id=17437的传染机制
- 用过ADO的朋友请帮忙
- 请大侠们看看如下不是排列的排列,用递归解决,我晕了一天了,没辙……
- 急!! 如何获取工程文件的路径
if(pList!=NULL) //是否分配成功
if(pList!=NULL) //是否分配成功如果pList==NULL,这时去delete就会报错
if(pList!=NULL) //是否分配成功--------------------
vc对new失败也是抛出bad_alloc异常,不是返回NULL。
如果你同样的操作在另外一个项目中没问题
哪应该就是项目的设置问题。
最好谁负责new ,就由谁负责delete
你在Delete时做下判断:
if( pList!=NULL )
{
//也可以打出Log看看
delete pList;
}
or
直接call GlobalAlloc GlobalFree
2\用if(NULL!=pList)用来判断是否为野指针
3\多线程情况下容易出现LZ说的这种情况,因为CIpList中的内容可能发生改变.
4\另外在list中使用CString没有任何问题,我经常这样来使用.
2、分配是成功的(有单步跟踪);
3、既然是没有启动多线程,并且分配后立马删除,也应该不会存在内存越界等问题吧?苦恼,一直不知什么原因……