Пояснить результат работы кода - C (СИ) (72541)
Формулировка задачи:
Добрый вечер.
кто нибудь может объяснить в чем здесь подвох?
http://rextester.com/BKATS43592
вывод:
#include <stdio.h> #include <stdlib.h> int main() { int *p = (int*)malloc(sizeof(int)); int *q = (int*)realloc(p, sizeof(int)); *p = 1; *q = 2; if (p == q) printf("%d %d\n", *p, *q); } //$ clang -O realloc.c ; ./a.out
1 2
Решение задачи: «Пояснить результат работы кода»
textual
Листинг программы
int main() { int *p = (int*)malloc (sizeof(int)); if (!p) return 1; int *q = (int*)realloc (p, sizeof(int)); if (q != p) return 1; p = (int*)realloc (p, sizeof(int)); if (p != q) return 1; *p = 1; *q = 2; if (p == q) printf("%d %d\n", *p, *q); return 0; }
Объяснение кода листинга программы
- Объявлена переменная
p
типаint*
и инициализирована значениемNULL
- Выполнена операция
malloc
для выделения памяти под один целочисленный объект, результат приведен к типуint*
и присвоен переменнойp
- Проверка на успешность выделения памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Объявлена переменная
q
типаint*
и инициализирована значениемNULL
- Выполнена операция
realloc
для изменения размера памяти, выделенной переменнойp
, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типуint*
и присвоен переменнойq
- Проверка на успешность изменения размера памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Выполнена операция
realloc
для изменения размера памяти, выделенной переменнойp
, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типуint*
и присвоен переменнойp
- Проверка на успешность изменения размера памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Переменная
p
приведена к типуint
и присвоен результат приведенной переменнойq
- Переменная
q
приведена к типуint
и присвоен результат приведенной переменнойp
- Проверка на равенство переменных
p
иq
с помощью оператораif
и возврат значения 1 в случае неравенства - Вывод на консоль значения переменных
p
иq
с помощью функцииprintf
- Возврат значения 0, указывающего на успешный исход работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д