Borland C++ Builder 6 указатель на массив целых числе(Integer), почему не определяется длина и можно использовать элементы за выделенной областью?
ниже приведён код и результаты его выполнения.
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++(а вернее продолжить после не большого опыта в университете).
Источник: Stack Overflow на русском