سلام،

من پس از فراخوانی fork و پیش از فراخوانی exec (در پروسس فرزند) دو آرایه روی heap می گیرم تا بتونم آرگومانهای خط دستور و متغیرهای محیطی رو از طریق execve به برنامه جدیدی که اجرا می شه پاس کنم. حالا مشکل اینجاست که فکر می کنم با execve پروسس از بین نمی ره، بلکه فقط برنامه ای که داره اجرا می کنه جایگزین می شه. پس هر منبعی (مثل حافظه پویا) که برنامه قبلی این پروسس گرفته باشه، برای برنامه فعلی هم اشغال شده به حساب میاد. ولی متاسفانه راهی برای آزاد کردنشون نداره (چون اسم و آدرس متغیرهای گرفته شده رو نمی دونه، چراکه متعلق به برنامه قبلی این پروسس بودن). اولا آیا این فکرم درسته یا کلا در اشتباهم؟ ثانیا برای آزاد سازی منابع یه تابع رو با atexit رجیستر کردم که فراخوانی نشد و بعدا فهمیدم که اینکار بی فایده س. چون طبق تعریف exec هرچی رو که از طریق atexit رجیستر شده باشه unregister می کنه. حالا شما راه دیگه ای به فکرتون می رسه که من بتونم درست پیش از فراخوانی execve این دو متغیر new شده رو delete کنم؟ با توجه به این که خود این دو متغیر هم به عنوان دو پارامتر آخر به execve پاس می شن. ممنون می شم راهنمایی کنید.