加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – std :: vector内存分配问题

发布时间:2020-12-16 09:47:36 所属栏目:百科 来源:网络整理
导读:我在尝试删除指针向量时遇到问题: std::vectorfloat* *v;v = new std::vectorfloat*;v-assign(2,new float[2]);for (int i = 0; i 2; ++i){ delete[] v-at(i);}delete v; 我正在删除整个向量中的每个元素,但我仍然得到一个断言.你能告诉我我做错了什么吗?
我在尝试删除指针向量时遇到问题:

std::vector<float*> *v;

v = new std::vector<float*>;
v->assign(2,new float[2]);

for (int i = 0; i < 2; ++i)
{
    delete[] v->at(i);
}
delete v;

我正在删除整个向量中的每个元素,但我仍然得到一个断言.你能告诉我我做错了什么吗?

先感谢您.

解决方法

这不符合你的想法:

v->assign(2,new float[2]);

分配一个大小为2的数组,然后将两个指针存储在向量中.删除时,会删除相同的指针两次.

如果你想要一个多维数组,你可以尝试std :: vector<的std ::阵列< float,2>取代.做新的并删除自己是一种代码味道. (同样适用于新的载体……;这可能不是你真正想要的.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读