Рассмотрим основной файл и другой файл, реализующий структуру данных (например, связанный список).
Вызывающий связанный список может помещать объекты в связанный список в стек или в кучу, и я предполагаю, что это ответственность вызывающего.
Итак, при реализации связанного списка, как он узнает, находится он в куче или нет? Рассмотрим типичный «метод», который удаляет узел из списка. Как связанный список узнает, следует ли освобождать эту память? Насколько я понимаю, освобождение чего-либо в стеке вызывает неопределенное поведение.
Поскольку это часть проекта класса, я не могу передать что-то (isOnHeap), чтобы указать, поместил ли вызывающий объект память в кучу (пояснение: невозможно, поскольку в нашей реализации это не допускается), поэтому я ' m при условии, что у этой проблемы может быть общее решение, особенно с учетом того, насколько распространенным будет такой случай. Обратите внимание, что реализация связанного списка должна обрабатывать освобождение собственной памяти (предполагается, что это дано, поскольку ее реализация скрыта от вызывающего).