0xC000005:Access Violation和指针强制转换问题
1 Unhandled exception in MyTest.exe:0xC000005:Access Violation
程序中调用某个dll,编译正常,运行时报错如上。产生此问题的原因好像多种,有说是dll内问题和dll内有new有关、有说调用问题接口写错之类等等
我程序中遇到该问题为:没有继承dll中某个类,可能是与dll的设计有关、对所调用的dll理解不够
2 类指针强制转换
问题现象:A类调用B类的方法并传递A的指针,在B中回调A的某个方法时并未实现回调的效果。
A中 (注:A继承了,VilarEventHandler, DataRecver)
int A::OpenStream()
{
return m_pDev->OpenStream(&m_lSourceStreamID, m_nChn, m_bSubStream, this, (long)this);
//return m_pDev->OpenStream(&m_lSourceStreamID, m_nChn, m_bSubStream,this, this, (long)this);
}
void A::DoData( const char * buf, unsigned int size )//虚函数供B中的A指针调接口
{
AfxMessBox("ok");
}
B中
int B::OpenStream(long* lStreamID, int nChn, int bSubStream, A* lpDataRecver, long lParam)
//int B::OpenStream(long* lStreamID, int nChn, int bSubStream,VilarEventHandler* lpEvent, DataRecver* lpDataRecver, long lParam)
{
........
HRESULT hr = m_iNetSdk->m_fLoginEx(m_lUserID, &camera, NULL, (DataRecver*)lpDataRecver, false);
//HRESULT hr = m_iNetSdk->m_fLoginEx(m_lUserID, &camera, NULL, lpDataRecver, false);
.......
}
用红色标注的代码对A、DataRecver进行强制转换后,B中的回调A的DoData不成功、不显示ok框
用注释的部分,直接传递A指针,在B中直接使用A的继承DataRecver而不用强制转换,能实现ok框的显示
0xC000005:Access Violation和指针强制转换问题相关推荐
- C++:将char*指针强制转换成一个指向结构体的指针
在使用Socket与雷达进行通信采集数据时,会遇到"打包与解包"的问题,在打包和解包过程中,会涉及到结构体指针与字符指针间的强制转换.如下: 打包就是将包头与信息封装成一定大小的包 ...
- 32位指针强制转换成64位数据
代码如下: void *paddr = dma buffer physical address; pkt->vp_pkt.paddr = (uint64_t)paddr ...
- C语言指针类型 强制转换
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...
- C++中指针的强制转换
转自:https://blog.csdn.net/u012273127/article/details/53260978 其又转自:http://blog.csdn.net/mhjcumt/artic ...
- c语言 void**类型转换,void指针类型强制转换
如何将一个void*强制转换成行指针类型? void*指针可以转换成任何类型的指针. 强制转换即可,比如 (int *)(void *)p; 假设你的数组有N行M列的int型数据. int arr[N ...
- C语言指针强制类型转换
概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...
- C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?
在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...
- c语言不同类型指针间的强转,C语言中不同的结构体类型的指针间的强制转换详解...
C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...
- c语言指针的强制类型转换,c语言指针的强制转换
在c语言中经常看到以下类似的代码: int x = 1; (char*)&x; 这样的形式的代码,这个里面就涉及一个类型转换的问题. 以下是在VC6.0中调试的结果 代码: int main( ...
最新文章
- ICRA 2021 | VINS 研讨会概要(附完整视频)
- 5、Linux-Mac配置环境变量
- [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别
- luogu P2572 [SCOI2010]序列操作
- 韩顺平循序渐进学java 第12讲 多态
- 数据段、代码段、堆栈段、BSS段的区别
- Linux_linux常用工具之make/makefile详解
- LeetCode 751. IP 到 CIDR(贪心)
- php7 viewmodel,【初念科技】| php框架实例: Laravel之Model Observer模型
- Springboot启动报错Error handling failed
- android文章 - 收藏集 - 掘金
- 7-2 学生成绩排序 (15 分)
- php商城系统源码的好处有哪些?
- linux 目录权限上下文,谢烟客---------Linux之文件安全上下文及特殊权限位
- php+转义反斜线,PHP 转义序列(反斜线)
- 电脑录音软件哪个比较专业
- 简单html模板 二手,二手物品交易HTML5模板
- 安徽大学2021计算机考研专业课题型,安徽大学电子信息工程学院2021研究生入学考试科目调整通知...
- 【Unity3D】Unity声音与录音与麦克风实时播放
- 80老翁谈人生(173):老翁力挺转基因,问责“反转派”