如题,我在主对话框(如CMyDlg)执行某一事件时给另一个类(如CImageContainer)的CString类型成员变量赋值时出现了这样的问题。在debug单步跟踪下,每执行到给对象(CString)赋值时就出现下述的错误:
unhandled exception in MyContainer.exe (msvcrtd.dll):0x0000005:access violation.
点击确认后错误指向STRCORE.cpp的AllocBeforeWrite等函数的这一行:
void CString::AllocBeforeWrite(int nLen)
{
if (GetData()->nRefs > 1 || nLen > GetData()->nAllocLength) //错误指向这一行 {
Release();
AllocBuffer(nLen);
}
ASSERT(GetData()->nRefs <= 1);
}请高手指点!
unhandled exception in MyContainer.exe (msvcrtd.dll):0x0000005:access violation.
点击确认后错误指向STRCORE.cpp的AllocBeforeWrite等函数的这一行:
void CString::AllocBeforeWrite(int nLen)
{
if (GetData()->nRefs > 1 || nLen > GetData()->nAllocLength) //错误指向这一行 {
Release();
AllocBuffer(nLen);
}
ASSERT(GetData()->nRefs <= 1);
}请高手指点!
解决方案 »
- 解析几何一道,还有谁记得!
- 一个关于文件夹的问题?
- 有关CString在VS.net 2003下的问题
- 将c++代码转到vc,错误是怎么回事啊?
- DeleteObject能否避免GDI资源泄漏?Ellipse导致资源泄漏?
- 求教,关于CRuntimeClass 里面的 Cobject*(pacscal*m_pfnCreateObject)()在什么时候初始化的?
- 如何通过程序改变系统字体的大小?
- VS2010 编译 emule(verycd版本) 出现奇怪错误!
- 奇怪的问题,送分了
- help me 将application加入任务栏图标
- 关于win32 api的问题在哪个版问?
- 如何获得FireFox地址栏中的地址?
unhandled exception in MyContainer.exe (msvcrtd.dll):0x0000005:access violation.
点击确认后错误指向STRCORE.cpp的AllocBeforeWrite等函数的这一行:
void CString::AllocBeforeWrite(int nLen)
{
if (GetData()->nRefs > 1 || nLen > GetData()->nAllocLength) ////错误指向这一行
{
Release();
AllocBuffer(nLen);
}
ASSERT(GetData()->nRefs <= 1);
}请高手指点!
看样子是GetData()的返回值是空的
看例子
CString str1("This is the string1");
int nOldLen = str1.GetLength();
char * pstr1 = str1.GetBuffer(nOldLen);
strcpy(pstr1,"modified");
//str1.ReleaseBuffer();//这句话不去掉和去掉的时候看nNewLen的值。
int nNewLen = str1.GetLength();