C++ - pointer value
C++ - pointer value
在Learning OpenCV
书中:
.
.
CvCapture *capture = cvCreateFileCapture(argv[1]);
IplImage* frame;
while(1)
{
frame = cvQueryFrame(capture);
.
.
}
在这里,我们可以看到*frame
是一个指针。但是,当我们编写下面的frame = cvQueryFrame(capture);
时,我们并没有为指针分配地址。在这种情况下,frame
将保持的值究竟是多少?
谢谢。
frame
是指向IplImage
类型对象的指针。假定cvQueryFrame()
函数分配一个IplImage
对象并返回该对象的地址。声明
frame = cvQueryFrame(capture);
将该返回指针的值分配给CCD_ 9。如果函数确实在分配一个新对象,您可能需要稍后通过调用operator delete
或之类的函数来释放内存
void cvDestroyFrame( IplImage * );
此外,你在问题末尾的陈述("*frame
是指针"(也不准确——frame
是指针;*frame
表示您正在取消引用使其类型为IplImage
的指针。
但是,当我们编写下面的frame=cvQueryFrame(capture(;时;,我们没有为指针分配地址。
实际上,我们正在为指针分配地址。cvQueryFrame
返回指针值(地址(。
实际上,*frame
是一个取消引用的指针,它将给出指针frame
所指向的对象。在这种情况下,函数cvQueryFrame()
返回被分配给frame
的指针。
由于您没有提供cvQueryFrame的原型(我不熟悉这个库(,我假设它的返回类型是IplImage*。这个方法可能在自己内部分配一些内存,然后从分配中返回地址。所以你在现实中,正在设置一个地址。
cvQueryFrame
返回一个指向IplImage
的指针,这意味着您的代码确实为指针分配了一个地址。这是函数的签名:
IplImage* cvQueryFrame( CvCapture* capture );
阅读手册:
- HighGUI参考手册
相关文章:
- C++ - "!pointer"和"pointer == nullptr"的区别?
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- 为什么我会" void value not ignored as it ought to be"?
- 方法错误"not all control paths return a value"和方法不返回值
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 如何在 c++ 中理解这样的代码 [request->headers().Method()->value().getStringView())]
- std::<key-value>不同类型的对向量
- c++ visual studio 64bit | save registers value
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- "No-Const Pointer to Const "调用功能
- 如何解决类成员函数中的"return a value"错误?
- bsoncxx: document::view vs document::value
- .value( "key" , default) 不适用于空的 json 对象吗?
- "owned pointer"和 std::shared_ptr 的"stored pointer"有什么区别?
- 删除分配的 (?) 指针时"Pointer being freed was not allocated"
- 马洛克会在 C++17 年返回"invalid pointer value"吗?
- "error: subscripted value is not an array, pointer, or vector",我正在使用字符串
- "[Error] pointer value used where a floating point value was expected" 如何解决此错误?
- C++ - pointer value