int main(void){
/* コールバックとか色々中略 */
glutTimerFunc(16, timer, 0);
glutMainLoop();
}

void timer(int value){
glutPostRedisplay();
glutTimerFunc(16, timer, 0);
}

GLUTの解説サイトによくあるコードなのですが、
glutTimerFuncをこのように利用すると、メモリリークする症状が見受けられました。
他の関数での末尾再帰はコンパイラで最適化されて起こりません。
関数の仕様なのでしょうか?