vector 动态分配数组问题,运行时报错。求老手解惑

gamer67 2013-01-23 03:35:15
之前创建了一个动态vector<int>数组如下:
vector<int> *ad =(vector<int> *) malloc(sizeof(vector<int>)*m);
运行到如下语句的时候就会出错
ad[i].push_back(st.at(j).no);
不知道为什么会出错 ?
求老手解惑。
...全文
221 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joseph_ 2013-01-24
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
sizeof一个对象,返回的不一定是该对象实例占用的内存字节大小。
肯定不能返回对象的大小啊、返回的是结构体的大小、对象可能比结构体本身大小要小、分配的的内存不一样全部用掉了嘛!
Joseph_ 2013-01-24
  • 打赏
  • 举报
回复
别且在C++ 里面额struct 就是class 啊! 只是默认的成员private 和public的区别啊
Joseph_ 2013-01-24
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
struct不是class,class有构造函数,new一个class的实例会自动调用其构造函数。
struct 也可以构造函数啊 他也会自动调用啊
赵4老师 2013-01-23
  • 打赏
  • 举报
回复
sizeof一个对象,返回的不一定是该对象实例占用的内存字节大小。
赵4老师 2013-01-23
  • 打赏
  • 举报
回复
struct不是class,class有构造函数,new一个class的实例会自动调用其构造函数。
Joseph_ 2013-01-23
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
vector <int>是对象,只能用来new,不能用来malloc
麻烦你看看下面我的回复 怎么我觉得可以用malloc 申请空间呢
      struct test{};
struct test *t = (struct test*)malloc(sizeof(test));
经常这用啊 我哪里想错了 可以告诉我嘛? 谢谢!
Joseph_ 2013-01-23
  • 打赏
  • 举报
回复
对象也可以用malloc 吧? C语言中经常用malloc对结构体变量申请空间啊。 一下代码有何为题?? int main() { vector<int> *ad =(vector<int> *) malloc(sizeof(vector<int>)); ad->push_back(1); vector<int>::iterator it= ad->begin(); cout<<*it<<endl; return 0; } 照样可以用malloc 楼主错误在这里吧::"ad[i].push_back(st.at(j).no);" 根本与前者定义的时候乱了。。 不知道我说错了没!! 请大神指教下!
gamer67 2013-01-23
  • 打赏
  • 举报
回复
多谢楼上各位 明白了 刚才编辑了下顺利运行
乃不知有汉 2013-01-23
  • 打赏
  • 举报
回复
malloc 只申请了 内存 new 申请了内存后 又调用了 vector 的构造函数 进行了初始化 没有调用构造函数,vector 内部的很多值都是未指定的,运行时自然会出错了
赵4老师 2013-01-23
  • 打赏
  • 举报
回复
vector <int>是对象,只能用来new,不能用来malloc
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
malloc换成new 试试。

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧