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>取代.做新的并删除自己是一种代码味道. (同样适用于新的载体……;这可能不是你真正想要的.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |