【发布时间】:2012-04-27 14:02:27
【问题描述】:
我有返回 VARIANT (mfc) 的函数 getMemory()。 据说 ulVal 中的成员是指向我需要访问的内存的指针。
int m_memAddr = object.getMemory().ulVal; //get pointer to memory
然后我需要将这个指针放入 char* 我试过了
char* pointer = (char*)m_memAddr;
它可以编译,但程序运行时出现错误。 怎么调试?
函数getMemory:
VARIANT object::getMemory()
{
VARIANT result;
InvokeHelper(0x4a, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
return result;
}
//从我使用的相机库的文档中编辑:
变体 GetImageMem() 说明
GetImageMem() 返回指向存储图像的内部图像存储器的起始地址的指针。如果使用环形缓冲,GetImageMem() 会返回上次用于图像捕获的图像内存的起始地址。
指向图像内存的指针在 VARIANT 数据类型的元素 ulVal 中返回。 参数
返回值
指向 VARIANT 数据类型的 ulVal 中的图像内存。
这是返回我的相机存储图像的内存的函数的描述。
我想用 OpenCV 处理这个图像,所以我需要 char* 将其设置为 IplImage imageData。
现在我希望更清楚问题是什么。
【问题讨论】:
-
什么错误?真的,问题是“如何调试它?”?
-
调试时很高兴知道错误。
-
sizeof(int) 不一定等于 sizeof(char*),你的 int 可能不够大。
-
在我的平台上,int 不足以容纳指针...
-
在
int中存储指针有什么意义?还有另一种非常适合该任务的类型(我的意思是char*,当然)。