指针-关于c++程序“本地堆”的问题

问题描述

关于c++程序“本地堆”的问题

编程的时候,遇到的问题。
我调用了第三方的动态库,在计算某个内存块的大小时,用到了 _msize _函数,结果
产生了一个ASSERT错误,查看文件大概是在_ASSERTE(_CrtIsValidHeapPointer(pUserData)这个地方差生了错误,并且他的注释之中提到了这样一句,The pointer MUST come from the 'local' heap. 我不太理解,什么事'local' heap?
希望有懂得大神,帮忙解答

解决方案

参考:http://blog.csdn.net/cto_51/article/details/9190725

解决方案二:

http://blog.csdn.net/laryyzhao/article/details/7544900

解决方案三:

本地堆
验证指针指向本地堆(由 C 运行时库的这个实例创建和管理的堆;DLL 可以有它自己的库实例,因而也可以有它自己的、位于应用程序堆之外的堆)中的内存。

解决方案四:

内存访问越界了。
进程中,加载的dll也会分配一块自己的堆,以便维护区分跟进程本身的堆。当然也可以设置成dll,exe共享堆的方式。

时间: 2024-10-26 08:25:21

指针-关于c++程序“本地堆”的问题的相关文章

dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以通过这个指针读取它的成员变量吗

问题描述 dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以通过这个指针读取它的成员变量吗 dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以直接通过这个指针读取它的成员变量吗? 解决方案 当然是可以的.但是更好的方式是把分配内存的工作交给调用者去做.因为这样不容易忘记释放内存.申请和释放的代码成对出现. 参考windows api里的GetWindowRect,它由调用者传入一个lpRect结构体指针,函数获取了窗口坐标,填充它. 解决方案二: 只要是在同一个

new-C/C++程序中堆区最大有多大?

问题描述 C/C++程序中堆区最大有多大? 为什么我在VS2012中new了如此大的空间却不会报错?char* p=new char[1024*1024*1024*1024*1024]; 解决方案 我猜,因为new的参数是size_t类型的,1024*1024*1024*1024*1024 = 0x4000000000000,传参数进去的时候就变成0了,参数是0时一般编译器会为你分配16个字节. 解决方案二: 不是编译器的优化,而是操作系统的懒惰分配. 另外,1024*1024*1024*102

代理程序本地执行或调试都没有问题,自动跑后总是报错“Type Mismatch”.CDAT函数使用时报错.

问题描述 代理程序本地执行或调试都没有问题,自动跑后总是报错"TypeMismatch".已经确定是CDAT函数使用问题.doc.GetItemValue("K_AgentTime")(0)的值为"2011/7/1902:30:02AM"代码如下,哪位高手帮忙看看.SubInitializeadmin="-----"REMdefineobjectDimsessionAsNewNotesSessionDimdbAsNotesDa

关于数组指针的c++程序,不知道为什么错了

问题描述 关于数组指针的c++程序,不知道为什么错了 #include #include using namespace std; int main(){ char str1[80], str2[80]; char pc1 = str1, *pc2 = str2; cin >> pc1 >> pc2; char a[80][80]; for (unsigned i = 0; i<strlen(str1) - strlen(str2) + 1; i++){ for (unsig

如何缓解Windows应用程序本地管理权限风险?

  用户总想多安装一些Windows应用程序,但是,如果管理员真的给了用户本地管理权限,那么网络有可能面临严重的威胁,而且,由于用户安装应用程序产生的危险越多,网络安全工作就越复杂.所以,管理员在给用户本地权限的时候,应该采取一些策略,以免对网络造成安全风险. 网络安全方面的专家Brad Casey曾提出过一些相关建议,比如,如果想给最终用户自己选择安装和运行哪些应用程序的权限,管理员最好是列出一个应用程序的黑名单,告诉用户哪些应用程序不能使用.而且这个黑名单还应该是一个可扩充的公开黑名单,通过

mapreduce程序本地模式调试

1.材料 无jar版windows平台hadoop-2.6.1.zip eclipse 解压 2 .配置环境变量 3.本地模式操作本地文件 conf.set("mapreduce.framework.name", "local"); conf.set("fs.defaultFS","file:///"); 运行参数 结果跑成功了 4.本地模式操作hdfs文件 conf.set("mapreduce.framework

指针-C语言程序用fputc函数写入字符到建立的文件中,程序运行正常,可是资源管理器里找不到建立的新文件?

问题描述 C语言程序用fputc函数写入字符到建立的文件中,程序运行正常,可是资源管理器里找不到建立的新文件? //怎样向文件读写字符 #include #include int main() { FILE * fp;//定义指向文件的指针 char ch,filename[10];//ch代表输入的字符变量,filename代表文件名 printf("请输入所用的文件名:"); scanf("%s",filename);//输入文件名 if((fp = fopen

指针-请问这道程序到底错在什么地方?

问题描述 请问这道程序到底错在什么地方? #include int mian() { int i, a[10], *p ; p = a; printf("please input 10 number:"); for (i = 0; i < 10; i++) scanf("%d",p++); p = a; for (i = 0; i < 10; i++, p++) printf("%d",*p); printf("n"

指针-这个小程序的do while循环怎么理解?

问题描述 这个小程序的do while循环怎么理解? #include #include #include int main(void) { char str[81]; char *p, temp; int i,n,length; gets(str); for (p = str,i=0,n = strlen(str); i<n/2; i++)//将整个字符串倒序 { temp = *(p+n-1-i); *(p+n-1-i) = *(p+i); *(p+i) = temp; } puts(str