指针存储在int中

时间:2012-04-27 14:02:28

标签: c++ pointers mfc

我有函数getMemory(),它返回VARIANT(mfc)。 据说在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;
}

//从相机lib的文档编辑我使用:

VARIANT GetImageMem() 描述

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

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

返回值

指向VARIANT数据类型的ulVal中的图像存储器。

这是对我的相机存储图像的内存返回的功能的描述。

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

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

1 个答案:

答案 0 :(得分:1)

来自documentation

  

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

     

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

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

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