c++ new 使用 memcpy函数拷贝内存失败
template<class T, int size>void CStack<T, size>::extend_space(int length) {T* temp_buf = new T[m_nSize+ length];memcpy(temp_buf, m_pBuf, sizeof(T)* m_nSize);m_nSize += length;delete []m_pB
·
template<class T, int size>
void CStack<T, size>::extend_space(int length) {
T* temp_buf = new T[m_nSize+ length];
memcpy(temp_buf, m_pBuf, sizeof(T)* m_nSize);
m_nSize += length;
delete []m_pBuf;
m_pBuf = temp_buf;
}
报错:
0x00ABA8B1 处(位于 homewrok5.exe 中)引发的异常: 0xC0000005: 写入位置 0xDDDDDDDD 时发生访问冲突。
解决方法:一个元素一个元素复制过去
template<class T, int size>
void CStack<T, size>::extend_space(int length) {
T* temp_buf = new T[m_nSize+ length];
for (int i = 0; i < m_nSize; i++)
temp_buf[i] = m_pBuf[i];
m_nSize += length;
delete []m_pBuf;
m_pBuf = temp_buf;
}
暂时没有明白出错原因!!!
更多推荐
所有评论(0)