我通过“删除”指令调试时出错,我无法知道原因。我什么时候应该使用删除?
您可以在下面看到代码:int GenerateOrderData(SetupData &mySetupData, OrderData &myOrder, int Level, wchar_t *buffer, bool normalAOC, int theActualCutsinPlatform)
{
int Size = 0;
if ( buffer != NULL )
{
//INIT
wchar_t* lString = new wchar_t[3];
swprintf(lString, L"%s", L"LPD");
Size += swprintf(buffer+Size, L"%c%02d%s", Communication::UNICODE_STX, numMSG, lString);
delete[] lString;
...}
来自调试器的错误:
调试错误! HEAP CORRUPTION DETECTED:在正常块(#152)之后的0x00806F80处。 CRT检测到应用程序写入内存后 堆缓冲区结束。
我不理解的是,如何使用我创建的数组以及在删除deallocate后获得缓冲区错误。
答案 0 :(得分:1)
在C ++中,字符串以零结尾。因此L"LPD"
实际上是字符L, P, D, \0
。您需要使用new wchar_t[4]
为终止空字符留出空间。