C++ Vector.resize() 导致的CopyMemory()出错问题
发布网友
发布时间:2024-03-02 01:57
我来回答
共5个回答
热心网友
时间:2024-03-04 16:21
不是大小的问题
vector不能用CopyMemory来拷贝内存
因为他是个类,其内存分布比数组相对复杂一些,不能使用内存拷贝,拷贝的话会导致其类成员变量被覆盖导致一些异常
可以使用循环下标赋值
如
for(int i=0;i<cnt;i++)
m_Vec[m_nPos+i]=src[i];
热心网友
时间:2024-03-04 16:21
不知道你m_nPos怎么取得,有问题hi我吧
——————————————————————————
想一下就可以了,比如原来m_Vec有5个数据,则最大到m_Vec[4],m_nPos=4
想再加5个元素的话,m_Vec.resize(m_nPos+cnt) ;也就是m_Vec.resize(9) ;
其实只有9个元素,最大到m_Vec[8]
热心网友
时间:2024-03-04 16:22
resize()函数会使迭代器失效。如果你的m_nPos是依赖迭代器的话,同样也会失效。
热心网友
时间:2024-03-04 16:22
Vector好歹也是个类,我就觉得直接拷贝内存感觉有点奇怪,而且作为vector他的size代表元素的个数吧,你的cnt代表什么呢?是已经计算好长度了吗?,我用vector从来都是插进去的,没有玩过resize
热心网友
时间:2024-03-04 16:23
多加一个就应该没有问题了.
就是说if句成立时
m_Vec.resizze(m_nPos+cnt+1)