Для определения величины стека в gcc использовать флаг -fstack-usage при компиляции.
В результате появится файл .su, который можно распарсить какой-нибудь avstack.pl и увидеть, сколько стека всего потребляется, и сколько в каждой отдельной функции.
С кучей так не получится - она выделяет память динамически. Можно поискать все *malloc в используемом коде например.