存储在 int 中的指针

Pointer stored in int

本文关键字:指针 int 存储      更新时间:2023-10-16

我有函数getMemory(),它返回VARIANT (mfc)。据说在ulVal成员是我需要访问的内存的指针。

int m_memAddr = object.getMemory().ulVal; //get pointer to memory

然后我需要将此指针转换为字符*我试过了

char* pointer = (char*)m_memAddr;

它可以编译,但在程序运行时出现错误。如何调试?

函数获取内存:

VARIANT object::getMemory()
{
    VARIANT result;
    InvokeHelper(0x4a, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
    return result;
}

编辑自我使用的相机库的文档:

VARIANT GetImageMem()描述

GetImageMem() 返回指向存储图像的内部图像存储器的起始地址的指针。如果使用环形缓冲,GetImageMem() 将返回上次用于图像捕获的图像内存的起始地址。

指向图像内存的指针在 VARIANT 数据类型的元素 ulVal 中返回。参数

返回值

指向 VARIANT 数据类型的 ulVal 中的图像内存的指针。

这是函数的描述,它返回我的相机存储图像的内存。

我想用OpenCV处理这个图像,所以我需要char*来将其设置为IplImage imageData。

现在我希望更清楚问题是什么。

来自文档

pbParamInfo - 指向以 null 结尾的字节字符串的指针,该字符串指定 pbParamInfo后面的参数类型。

... - 参数的变量列表,在pbParamInfo中指定的类型。

您正在为 pbParamInfo 传递 NULL,我认为这意味着返回的变体中不会存储任何数据,因此指针当然是无效的。

如果您进一步遵循文档,您会发现传递 VTS_BSTR 指定您可以使用指向字符的指针初始化变体(将其作为 pbParamInformation 之后的下一个参数传递)。