выделить память в родительском.
Используйте эту память как в родительской, так и в детской.
Дайте ответственность за освобождение памяти родителю.
Заставьте родителя ждать (ждать системного вызова) ребенка.
Родитель освобождает память перед выходом.
В качестве альтернативы, чтобы быть на более безопасной стороне, перед выходом ребенка проверьте, жив ли родитель или нет.
Если нет, то освободите память у самого ребенка. Но это не сработает, если может быть несколько детей.
Вы можете использовать первые несколько битов памяти, чтобы отслеживать количество процессов, использующих эту память. Всякий раз, когда процесс начинает использовать память, он увеличивает этот счетчик, а перед выходом из него уменьшает счетчик. Плюс, если счетчик становится равным 0, освободите память.
Существует еще один метод. Напишите функцию ownMalloc, которая располагается поверх системного malloc (или любой другой функции, которую вы используете). Это отслеживает всю выделенную память, а также процессы, которые ее используют. Он периодически просматривает различные выделенные фрагменты и освобождает блок, который не используется.