Borland C++ Builder 6 указатель на массив целых числе(Integer), почему не определяется длина и можно использовать элементы за выделенной областью?

Рейтинг: 0Ответов: 0Опубликовано: 03.02.2023

ниже приведён код и результаты его выполнения.

int *k = new int[10];
for (int i = 0;i < 10;i++) {k[i] = i;}//Для демонстрации примера этого можно и не делать
k[115] = 555;
for (int i = 0;i < 10;i++) {
  k[i] = i;
}
Memo1->Lines->Add(sizeof(*k));//возвращает 4
Memo1->Lines->Add(sizeof(*k));//возвращает 4
Memo1->Lines->Add(k[115]);//возвращает 555

Как определить количество элементов в массиве и/или под сколько элементов было выделено памяти. Почему при явном объявлении количества элементов массива допустимо использовать элементы с ключами значения которых превышают выделенный диапазон?

P.S. вопрос почему бы не использовать более современный компилятор мне уже задавали. Для реализации запланированного в среде Borland C++ Builder 6 мне почти достаточно знаний, работаю я с другим языком, как раз продую разобраться как работает компилятор и осуществлялась работа с памятью в ранних C++, давно планировал начать программировать на C++(а вернее продолжить после не большого опыта в университете).

Ответы

Ответов пока нет.