pen*_*ope 0 c++ memory-management
我有一段代码,我首先将一些值放入a中std::vector,然后将其中每个值的地址提供给将要使用它们的对象之一,如下所示:
std::vector < useSomeObject > uso;
// uso is filled
std::vector < someObject > obj;
for (int i=0; i < numberOfDesiredObjects; ++i){
obj.push_back(someObject());
obj.back().fillWithData();
}
for (int i=0; i < numberOfDesiredObjects; ++i){
uso[i].setSomeObject(&obj[i]);
}
// use objects via uso vector
// deallocate everything
Run Code Online (Sandbox Code Playgroud)
现在,因为我有时候是一个风格怪物,我认为这很难看,并且只想使用1 for loop,有点像这样:
for (int i=0; i < numberOfDesiredObjects; ++i){
obj.push_back(someObject());
obj.back().fillWithData();
uso[i].setSomeObject(&obj.back());
}
Run Code Online (Sandbox Code Playgroud)
当然,我不能这样做,因为偶尔会发生重新分配,并且我设置的所有指针都变得无效.
所以,我的问题是:std::vector.reserve()如果您知道自己需要多少并且想要提前分配内存,
我知道这是要走的路.如果我确保我要提前分配足够的内存reserve(),这是否可以保证我的指针保持有效?
谢谢.
边注. 这是一个类似的问题,但对我想知道的内容没有答案.只是为了防止它弹出作为对这个问题的第一个评论.
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |