Я тестировал новый оператор в C++ как:Пинтер нового оператор C++
#include <iostream>
using namespace std;
int main()
{
int *Q = new int[5];
Q[0] = 0;
Q[1] = 1;
Q[2] = 2;
Q[3] = 3;
Q[4] = 4;
for (int i = 0; i < 7; i++)
{
cout << "Q[" << i << "] = " << Q[i] << endl;
}
return 0;
}
Если вы заметили, в течение цикла я превышающий предел указателя, и я ожидал стек над потоком тип ошибки; но вместо этого он просто печатал, что когда-либо было у этих двух дополнительных мест.
Есть ли у кого-нибудь объяснения по этому поводу?
Неопределенное поведение не определено; ничего или ничего не может произойти. – 5gon12eder
Это просто неопределенное поведение. Вы не можете ожидать какого-либо конкретного результата от запуска этой программы. – juanchopanza
Я понимаю, что эта программа ничего не делает (она предназначена для тестовой программы для «нового» оператора). Однако, если я пишу одну и ту же программу в C с помощью оператора malloc, я получаю ошибку переполнения при попытке получить доступ к Q [5] и Q [6]. – Anas