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

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

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐