Ошибка отладочного утверждения (переменная динамического типа)

Мой код компилируется как таковой, но я не могу понять, почему я продолжаю получать эту ошибку, которая говорит мне, что «Отладка Утверждения Сбой». Почему это?

#include <iostream>
using namespace std;
struct Bag
{
int k;
};int main ()
{
int *p1;
int *p2;
char p3;

//k = 100; // Assigns variable of type bag to 100

p1 = new int; // Variables created using the new operator are called dynamic variables
p2 = new int;*p1 = 30;
*p2 = 50;
p3  = 'K';

*p1 = *p1 + *p2;
p1 = p2;

cout << "The sum of the two pointers is = " << *p1 << endl;

delete p1;
delete p2;                // Delete the dynamic variable p1 and return the memory occupied by p1 to the freestore to be reused.

system ("Pause");
return 0;
}

-1

Решение

Я предполагаю, что вы получаете Отладочное Утверждение Сбой на этой строке:

delete p2;

Проблема здесь в том, что вы устанавливаете «p1 = p2», поэтому оба указателя указывают на область памяти, содержащую целое число «50». После этого вы удаляете указатель p1, что означает UN-выделение области памяти, содержащей целое число «50».

В этот момент p2 не определено, и попытка удалить его приведет к ошибке проверки отладки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector