זה שזה עובד זה לא אומר שזה תקין , מה שקורה זה פשוט דורס זיכרון ובמקרה זה לא הפריע לדברים אחרים...
באיטרציה אחרת של ריצה זה היה יכול לדרוס זיכרון שלא היית רוצה שידרסו אותו, צריך להרחיב את המערך הפנימי בכל הכנסה .ואת ההמשך של השאלה לא כל כך הבנתי , לא הבנתי למה אי אפשר לעשות array = NULL , אני רואה שרשמת *array = NULL אולי התבלבלת ? כי את הערך שהפוינטר בברירת המחדל מצביע עליו אתה לא יכול לשנות כל עוד הוא לא הוקצה כמו שצריך