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_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;
}

暂时没有明白出错原因!!!


版权声明:本文为qq_40606107原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。