1. Главная
  2. Библиотека
  3. Программирование
  4. Определить в какие моменты выполнение программы указате...
Решение задачи

Определить в какие моменты выполнение программы указатель q находится в неопределённом состоянии, если выделение памяти прошло успешно, а попытка её увеличения закончилась неудачно double p,q; /1/ p = (double) malloc (10 sizeof (double)); /2/ q= (double)

  • Программирование

Условие:

Определить в какие моменты выполнение программы указатель q находится в неопределённом состоянии, если выделение памяти прошло успешно, а попытка её увеличения закончилась неудачно

double p,q;
/1/

p = (double) malloc (10 sizeof (double));

/2/

q= (double) realloc(p, 1000sizeof(double));

/3/

if (q!=NULL)

p=q;
/4/
...

free(p);
/5/

Решение:

Давайте проанализируем код шаг за шагом, чтобы определить, в какие моменты указатель q находится в неопределённом состоянии. 1. В строке p = (double) malloc (10 sizeof (double)); происходит выделение памяти для массива из 10 элементов типа double. Если выделение памяти прошло успешно, указатель p указывает на выделенную область памяти. На этом этапе указатель q не инициализирован, и его состояние неопределено. 2. В строке q= (double) realloc(p, 1000sizeof(double)); происходит попытка изменить размер выделенной памяти, на которую указывает p, на 1000 элементов типа double. Если выделение памя...

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет