我试图使用Cpp删除函数中的缓冲区, 到目前为止,这是我的代码:
void GetPiece(int size)
{
//std::cout << "Downloading File Index: " + currFileIndex << " More: " + pieceSize - size;
char * newBuffer = new char[size];
bitRequest->RecvBySize(newBuffer, size - 4, 5);
//newBuffer += 8;
File file("work_torrent.mp3");
file.WriteToFile(newBuffer + 8, size - 4);
file.Close();
pieceSize -= size -4;
std::cout << "Downloading File Index: " << currFileIndex << " More: " << pieceSize << std::endl;
if (pieceSize <= 0)
{
currFileIndex++;
pieceSize = pieces.at(currFileIndex).fileSize;
}
offset += size - 4;
if (pieceSize > 16384)
{
if (1048576 - offset < 16384)
{
requestSize = 1048576 - offset;
if (requestSize == 0)
{
offset = 0;
currPieceIndex++;
if (pieceSize > 16384)
{
requestSize = 16384;
}
else {
requestSize = pieceSize;
}
}
}
else {
requestSize = 16384;
}
}
else {
requestSize = pieceSize;
}
bitRequest->RequestPiece(currPieceIndex, offset, requestSize);
delete[] newBuffer; // Here it throws the error
}
错误:
只有当我试图从memmorry中释放char数组时才会出现,有人知道它为什么会出错?
当删除行不存在时,经过一段时间我调用该函数后,由于失败分配导致程序崩溃。