Я читаю разные ответы на вопрос об обнаружении роста стека и понимаю, что в современных архитектурах стек может расти случайным образом, может создаваться из кучи и т. Д.
Однако в этом классическом вопросе к собеседованию я хочу понять , почему люди используют вызов функции, а не сравнивают 2 локальные переменные в одной и той же функции. Я думаю, что для этого должна быть какая-то особая причина, но, не будучи разработчиком на низком уровне C / Java [Java :)], я просто догадываюсь.
Вот код, который я пробовал:
void sub (int *a) {
int b;
int c;
printf ("a:%d\n", a);
printf ("b:%d\n", &b);
printf ("c:%d\n", &c);
if (&b > a) {
printf ("Stack grows up.\n");
} else {
printf ("Stack grows down.\n");
}
}
int main (void) {
int a;
int b;
sub (&a);
printf ("\nHere we go again!!\n");
if (&b > &a) {
printf ("Stack grows up.\n");
} else {
printf ("Stack grows down.\n");
}
return 0;
}
Я также нашел эту статью, которая пытается оптимизировать решение, которое я тоже не понимаю: http://www.devx.com/tips/Tip/37412
P.S .: Из разных ответов на эту и другие темы кажется, что сам вопрос ошибочен / неактуален, поскольку в качестве вопроса об интервью он, вероятно, усиливает неверные предположения, если кто-то не исследует ответ!
Спасибо!