• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 一个调试问题:InvalidAddressspecifiedtoRtlSizeHeap,麻烦看看!

一个调试问题:InvalidAddressspecifiedtoRtlSizeHeap,麻烦看看!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了invalid address,亚航invalid address,invalid base address,invalid ip address,err address invalid等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个调试问题:Invalid Address specified to RtlSizeHeap,麻烦看看!
描述:

下面这段代码, 调试的时候发现Add方法在连续调用几次后便出现: HEAP[MRServer.exe]: Invalid Address specified to RtlSizeHeap( 130000, 146678 ). 
不知问题出在哪了? 麻烦高手看看。谢谢!
代码如下:
#include <vector>
//-----------------------------------------------------------------
// Property.CPP
//-----------------------------------------------------------------
class CProperty  {
public:
CProperty(){
m_bstrPropName = BSTR("");
m_bstrPropValue = BSTR("");
}
virtual ~CProperty(){}
private:
BSTR m_bstrPropName;
BSTR m_bstrPropValue;
};
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// DataBuffer.H
//-----------------------------------------------------------------
typedef std::vector<CProperty, std::allocator<CProperty> > PROPERTYVECTOR;
class CDataBuffer  {
public:
BSTR GetData();
BSTR GetKey();
boolean SetKey(BSTR bstrKey);
boolean SetData(BSTR bstrData);
CDataBuffer(){}
virtual ~CDataBuffer(){}
private:
CComBSTR m_bstrKey;
CComBSTR m_bstrData;
PROPERTYVECTOR m_Prop;
};
// DataBuffer.CPP
boolean CDataBuffer::SetData(BSTR bstrData){
m_bstrData.Attach(bstrData);
return true;
}
boolean CDataBuffer::SetKey(BSTR bstrKey){
m_bstrKey.Attach(bstrKey);
retur true;
}
BSTR CDataBuffer::GetKey(){
return m_bstrKey.Copy();
}
BSTR CDataBuffer::GetData(){
return m_bstrData.Copy();
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Center.H
//-----------------------------------------------------------------
class ATL_NO_VTABLE CCenter : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCenter, &CLSID_Center>,
public IDispatchImpl<ICenter, &IID_ICenter, &LIBID_MRSERVERLib>
{
public:
CCenter(){ }
DECLARE_REGISTRY_RESOURCEID(IDR_CENTER)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CCenter)
COM_INTERFACE_ENTRY(ICenter)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// ICenter
public:
STDMETHOD(Add)(/*[in]*/ BSTR bstrKey, /*[in]*/ BSTR bstrInfo, /*[out,retval]*/ long* pResult);
};
// Center.CPP
typedef std::vector<CDataBuffer, std::allocator<CDataBuffer> > DATAVECTOR;
DATAVECTOR gData;
STDMETHODIMP CCenter::Add(BSTR bstrKey, BSTR bstrInfo,long* pResult){
CComBSTR bstrTmp(bstrKey);
if( bstrTmp.Length() == 0 ){
*pResult = -1;
return S_FALSE;
}
DATAVECTOR::iterator oIterator;
CDataBuffer* pDB = NULL;
CComBSTR thisKey(bstrKey);
for(oIterator = gData.begin(); oIterator != gData.end(); oIterator ++){
pDB = oIterator;
CComBSTR bstr(pDB->GetKey());
if( bstr == thisKey ){
*pResult = -2;
return S_FALSE;
}
}
CDataBuffer oDB;
oDB.SetKey(bstrKey);
oDB.SetData(bstrInfo);
gData.push_back(oDB);
*pResult = gData.size();
return S_OK;
}
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// MRServer.idl
//-----------------------------------------------------------------
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(78E1AFD6-4AD7-4232-8F56-0935BCC82762),
dual,
helpstring("ICenter Interface"),
pointer_default(unique)
]
interface ICenter : IDispatch
{
[id(1), helpstring("method Add")] HRESULT Add([in] BSTR bstrKey, [in] BSTR bstrInfo, [out,retval] long* plResult);
};
[
uuid(70484CAC-5FA6-4863-9FE0-48225B26F940),
version(1.0),
helpstring("MRServer 1.0 Type Library")
]
library MRSERVERLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(E351DEB7-48A8-474E-ABE2-3173BF575298),
helpstring("Center Class")
]
coclass Center
{
[default] interface ICenter;
};
};
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// 调试代码(VB)
//-----------------------------------------------------------------
Private Sub Command1_Click()
Dim obj, i As Long
Dim n As Long
Set obj = CreateObject("MRServer.Center")
n = obj.Add("KEY_2", 6)
Debug.Print "First: " & n
For i = 1 To 9
    n = obj.Add("KEY_" & i, "ITME_" & i)
Next
n = obj.Add("KEY_5", "d")
End Sub
//-----------------------------------------------------------------


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 一个调试问题:InvalidAddressspecifiedtoRtlSizeHeap,麻烦看看!

相关文章

  • 2017-06-05 关于线程的一个问题---->>>>>
  • 2017-06-05 如何判断一个进程是不是系统进程?(不通过文件名)
  • 2017-06-04 ActiveX的成员定义问题
  • 2017-06-04 关于vc中调用vb的ActiveXdll的问题
  • 2017-06-04 ATL如何调用外部的控件如Picture?
  • 2017-06-05 关于全局变量的声明,请教!
  • 2017-06-04 HELP哪位大侠能提供一下OPCclient端的VC源代码亚不要是demo版的
  • 2017-06-05 OverlayIcon的问题
  • 2017-06-05 请教wtlcedit添加行的问题
  • 2017-06-04 ActiveX如何获得当前的URL?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • IWebbrowser事件问题
    • 同步报警问题
    • MFC基本对话框里面怎么才能对外部OCX进行操作呢?
    • 关于多线程:主线程传递句柄给子线程,但子线程中得不到原来的对象
    • 关于线程的简单问题!
    • 如何在ATL中使用向MFC中的WindowProc窗口过程函数
    • c#net环境下添加tlb引用失败,怎么回事?
    • 大家帮我看看,这样在线程中会不会有问题?
    • msflexgrid的安装问题
    • 简单问题,nt\win2000的多线程性能怎么样?一个程序最多开多少线程比较合适?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有