在我的C代码中,我有一个类Object,它配有int类型的id字段.现在我想创建一个Object *类型的指针向量.首先我试过了

vector v;

for(int id=0; id

Object ob = Object(id);

v.push_back(&ob);

}

但这失败了,因为这里同一个地址只重复了n次.如果我使用new运算符,我会得到我想要的但我想避免动态内存分配.然后我认为我需要的是以某种方式在for循环之前声明n个不同的指针.直截了当的方式是声明一个数组,所以我这样做:

vector v;

Object ar[n];

for(int i=0; i

ar[i] = Object(i);

}

for(int i=0; i

v.push_back(ar+i);

}

如果我这样做,是否还有可能导致内存泄漏?在我看来,通过数组声明也有点笨拙.有没有其他方法来创建指针向量但避免手动内存管理?

编辑:为什么我想要指针而不仅仅是普通对象?

好吧,我稍微修改了原来的实际情况,因为我以这种方式思考,我可以用最简单的形式表示问题.无论如何,我仍然认为这个问题可以在不知道为什么我需要一个指针向量的情况下得到解答.

其实我有

Class A {

protected:

vector vec;

...

};

Class B: public A {...};

Class Superobject {

protected:

int id;

...

}

Class Object: public Superobject {...}

在派生类B中,我想用Object类型的对象填充成员字段vec.如果超类没有使用指针,我会遇到对象切片问题.所以在B类构造函数中,我想将vec初始化为Object *类型的指针向量.

EDIT2

是的,在我看来,动态分配是合理的选择,使用数组的想法是个坏主意.当数组超出范围时,事情就会出错,因为向量中的指针指向不一定包含对象的内存位置.

在B类的构造函数中我有

B(int n) {

vector vec;

Object ar[n];

for(int id=0; id

ar[id] = Object(id);

}

for(int id=0; id

v.push_back(ar+id);

}

}

这在B类对象中引起了非常奇怪的行为.

利用指针求向量乘积C语言,创建指针的c向量相关推荐

  1. c语言中用指针的必要性,浅析C语言使用指针的必要性.pdf

    第 21 卷第 8 期长春大学学报Vol 21No 8 2011 年 8 月 JOURNAL OF CHANGCHUN UNIVERSITYAug 2011 收稿日期 2011 06 20 作者简介 ...

  2. c语言指针赋值指针变量赋值吗,C语言_指针变量的赋值与运算,很详细

    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明, 而且必须赋予具体的值.未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址, 决不能赋予任何其它数据 ...

  3. c语言指针课堂教学设计,C语言程序设计 指针 C教学设计8单元V1.0.doc

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第八单元 指针 授课教师 宋铁桥 ...

  4. c语言指针引用数组元素,c语言——数组指针和通过指针引用数组元素的方法总结...

    1.数组指针:即指向数组的指针 那么, 如何声明一个数组指针呢? int (* p)[10]; /*括号是必须写的,不然就是指针数组:10是数组的大小*/ 1 拓展:有指针类型元素的数组称为指针数组. ...

  5. 清华大学c语言指针ppt,清华大学出版社-C语言10指针.ppt

    清华大学出版社-C语言10指针 void print(char *name[ ],int n) {int i: for(i=0:i<n:i++) printf(″%s\n″,name[i]): ...

  6. c语言函数指针 的定义方法,C语言 函数指针一(函数指针的定义)

    //函数指针 #include #include #include //函数指针类型跟数组类型非常相似 //函数名就是函数的地址,函数的指针,对函数名进行&取地址操作,还是函数名本身,这是C语 ...

  7. C语言指针互换的方法,C语言-运用指针进行角色互换

    问题描述:运用指针进行角色互换 源代码: /*运用指针进行角色互换*/ /*只有方案二可以完成角色互换*/ #include void swap1(int x,int y),swap2(int *px ...

  8. 利用指针求向量乘积C语言,c – 通过指针在函数之间传递向量

    有人建议我使用指针添加一个我想从一些现有函数传递给另一个函数的向量.我真的很困惑如何从该指针中获取信息.我已经尝试了很多我在这里和那里读过的东西,所以让我展示一下我在说什么. 主要课程: @H_403 ...

  9. C语言创建指针需要给大小吗,如何用c语言创建一个指针(示例代码)

    正如我们所知,在c语言中,char指针逐字节遍历内存,即每次1字节,每次整数指针4字节(在gcc编译器中),每次2字节(在TC编译器中). 例如: char *cptr; // if this poi ...

最新文章

  1. 你了解微服务架构么?
  2. ICCV Neural Architects Workshop - 对话深度学习大咖
  3. chrome开发者工具各种骚技巧
  4. java与java ee_Java EE MVC:处理表单验证
  5. Maven pom.xml配置详解
  6. 拓端tecdat|R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
  7. 使用RAID 5虚拟磁盘时,dell的perc控制器H310的性能较差
  8. 分数阶微积分学薛定宇电子版_分数阶微积分 pdf epub mobi txt 下载
  9. Python 统计分析--单因素方差分析
  10. poi合并docx文档
  11. iOS根据ts文件路径封装成m3u8文件及m3u8播放
  12. java继承和接口的区别_java中的接口与继承的区别
  13. 【论文阅读】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
  14. MySQL Workbench建表时 PK NN UQ B UN ZF AI G的含义
  15. 常见的文件头信息对照表
  16. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.8 现状...
  17. 计算年龄的sql语句
  18. 【解决方案】智慧煤矿:加速智能化布局,AI助力煤炭产业转型升级
  19. Torque 4.0 下载、安装、配置、提交作业、列队id归零
  20. 模糊搜索——Vue单页面-Element UI

热门文章

  1. ReachHooks之父子组件传值
  2. 【宫水三叶的刷题日记】675. 为高尔夫比赛砍树(困难)
  3. IPFS方得社区周欢:web3.0时代的分布式存储畅想
  4. python弹球游戏
  5. python中类的定义、实例化、封装以及私有变量/方法
  6. web无序列表去掉点_在HTML中怎样去除无序列表前的小圆点
  7. 第三方SDK:蒲公英
  8. 梯度下降、ISTA和FISTA算法收敛速率推导
  9. 追索权 Eclipse + NDK error: stray #39;\24#39; in program
  10. 函数定义、函数声明、函数原型