Рассмотрим следующие три функции C:
[P1]
int *g(void) {
int x = 10;
return (&x);
}
[P2]
int *g(void) {
int *px;
*px = 10;
return px;
}
[P3]
int *g(void) {
int *px;
px = (int *)malloc(sizeof(int));
*px = 10;
return px;
}
Какая из трех вышеупомянутых функций может вызвать проблемы с указателями?
a. Только П3
б. Только P1 и P3
c. Только P1 и P2
d. P1, P2 и P3
Я считаю, что это должно быть d , потому что, если куча заполнена, malloc
вернет нулевой указатель, а P3 может даже выйти из строя. Но тогда везде, где я вижу на Inte rnet, везде упоминается опция c. Хотелось бы услышать все ваше мнение по этому поводу!