@Yonghwa
121

О какой памяти идет речь в этом куске кода?

void f(){
    int* x = malloc(10 * sizeof(int));
    x[10] = 0;
}


Препод говорит, что 10 не в диапазоне памяти.Можно указать число в квадратных скобках от 0 до 9.
О какой памяти он говорит?Не могу разораться.
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
Olej
@Olej
инженер, программист, преподаватель
Препод говорит, что 10 не в диапазоне памяти.Можно указать число в квадратных скобках от 0 до 9.

Правильно говорит ;-)
int* x = malloc(10 * sizeof(int));
- размещает массив из 10-ти элементов, x[10] ...
- элементы массива из 10-т элементов индексируются так (начиная с 0): x[0], x[1], ... x[8], x[9] (10 штук)
- индексация x[10] - за пределами выделенной массиву памяти, 11-й элемент, очень грубая ошибка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы