OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 2800|回复: 6

CvMemBlock的困惑

[复制链接]
发表于 2009-1-6 17:05:46 | 显示全部楼层 |阅读模式
typedef struct CvMemBlock
{
struct CvMemBlock* prev;
struct CvMemBlock* next;
} CvMemBlock;

结构体由两个包含自己的指针组成???有这么定义结构体的吗?自己包含两个指向自己的指针,头都被搞晕了。书上说CvMemBlock代表了一个单独的内存存储块结构,可是结构体就两个指针啊。哎  谁能指点一下  谢谢!
回复

使用道具 举报

发表于 2009-1-6 17:18:47 | 显示全部楼层

CvMemBlock的困惑

循环体CvMemBlock的前移、后移。
回复 支持 反对

使用道具 举报

发表于 2009-1-6 17:29:41 | 显示全部楼层

CvMemBlock的困惑

typedef struct CvMemBlock
{
struct CvMemBlock* prev;
struct CvMemBlock* next;
} CvMemBlock;

结构体由两个包含自己的指针组成???有这么定义结构体的吗?自己包含两个指向自己的指针,头都被搞晕了。书上说CvMemBlock代表了一个单独的内存存储块结构,可是结构体就两个指针啊。哎  谁能指点一下  谢谢!

空间可以附到结构的后面,比如:
  1. CvMemBlock* allocMem(int size)
  2. {
  3.   CvMemBlock *p = malloc(sizeof(*p) + size);
  4.   return p;
  5. }
复制代码

那么(p+1)指向的内存就是分配的空间了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 19:57:40 | 显示全部楼层

CvMemBlock的困惑

不是  一个结构体还不知道内部构造是什么。就来了指向自己的两个指针。CvMemBlock结构体还没有定义,怎么结构体的元素怎么能指向自己的指针呢?
另外它的数据存在哪儿呢?是两个指针的哪个指针里面呢?谢谢
回复 支持 反对

使用道具 举报

发表于 2009-1-7 09:06:16 | 显示全部楼层

CvMemBlock的困惑

不是  一个结构体还不知道内部构造是什么。就来了指向自己的两个指针。CvMemBlock结构体还没有定义,怎么结构体的元素怎么能指向自己的指针呢?
另外它的数据存在哪儿呢?是两个指针的哪个指针里面呢?谢谢

结构体还没有定义可以定义指针,这个建议复习一下C语言知识。
数据是存放在结构的后面,可以认为结构后面还有一个数据成员:
  1. typedef struct CvMemBlock
  2. {
  3. struct CvMemBlock* prev;
  4. struct CvMemBlock* next;
  5. char data[0];
  6. } CvMemBlock;
复制代码

data是一个char数组,没有数据的时候不占空间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-7 11:54:49 | 显示全部楼层

CvMemBlock的困惑

恩 谢谢 于是其的书上说存在header块以后。header在哪儿定义的呢?? 谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-1-7 12:21:52 | 显示全部楼层

CvMemBlock的困惑

恩 谢谢 于是其的书上说存在header块以后。header在哪儿定义的呢?? 谢谢!

看这个帖子:

<!-- l --><a class=\"postlink-local\" href=\"http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=2679\">viewtopic.php?f=1&t=2679</a><!-- l -->
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-9-17 06:44 , Processed in 0.036841 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表