ראשית, כאשר עובדים מסודר, ובאופן מבני העסק הרבה יותר
פשוט, תדאג שכל בלוק שאתה מקצה, יש מישהוא שאחרי לשחרר אותו.
לפני שאתה כותב malloc, צריך להיות ברור לך איזה חלק בקוד
יצרך לבצע free ובאילו תנאים.
כדאי מאוד שזה יהיה מוגדר היטב, לכל שורת הקצאה תתאים
שורת free מסוימת.לפעמים יש בעיות קשות שממש כזה לעקוב, מי משתמש באיזה
חלק מהקוד, ואז יש גימיק נחמד, בשם smart pinters,
אתה עוטף את כל הpointers שלך בכזה struct קטן שסופר כמה עותקים
יש לך לpointer הזה, ומחזיק למעשה מצביעים לstruct הזה.
את השחרור אתה מבצע כאשר אתה מוחק את המצביע האחרון לאותו
בלוק בזכרון. בC++ זה מאוד נוח, בC זה יותר מסובך
כמו כן יש מספר כלים אוטמטים שיכולים מאוד לעזור באיתור בעיות
זכרון, תחת לינוקס אני משתמש בכלי מצוין בשם valgrind
תחת חלונות יש כמה פתרונות, רובם חלשים יותר מvalgring
היחיד שמתחרה ברצינות הוא codegaurd של borland
valgrind עוקב אחרי כל ההקצאות והשחרורים שאתה עושה וכן
עוקב אחרי כל הגישות שלך לזכרון, ואם לא שחררת משהוא
הוא יגיד לך בדיוק איפה הקצת את הבלוק, עם backtrace
DRYICE