is_block_type_valid () Ошибка при запуске C ++ в Visual Studio - PullRequest
0 голосов
/ 28 сентября 2019

Я пытался запустить следующий код в Visual Studio.Он запускается, но показывает приведенное ниже сообщение «Ошибка отладки подтверждения».Чего не хватает?

int main()
{
    int var = 5;
    int* pPointer1 = &var;
    int* pPointer2 = new int;
    if (pPointer2 == NULL)
    {
        cout << "Failed." << endl;
    }
    pPointer2 = &var;

    cout << "Pointer1: " << *pPointer1 << endl;
    cout << "Pointer2: " << *pPointer2 << endl;
    cout << pPointer1 << endl << pPointer2 << endl;

    delete pPointer2;
    pPointer2 = 0;
}

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2019

Ну, вы пытаетесь освободить память, выделенную в стеке, используя delete, предназначенную для памяти, выделенной в куче.Там нет ничего удивительного!Вы также вызвали утечку памяти, так как не освободили то, на что изначально указывал pointer2.

pPointer2 = &var; // pointer is pointing to stack
...
delete pPointer2; // deleting in stack, undefined behavior (or just plain wrong)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...