int a;
int *b;
void test(int* target)
{
delete(target);
}
test(new int); // <-- It's ok, of course.
test(&a); // <-- It raises assertion fail, of course, too.
Учитывая следующий код. Единственное, что я знаю о target
, - это указатель на целое число. Как я могу указать источник указателя аргумента?Как я могу указать источник аргумента указателя?
Что вы подразумеваете под источником? – Annabelle
У вас нет видимости того, как что-то было выделено. Это зависит от вас, чтобы отслеживать. – Joe
Вы не можете сделать это надежно вообще. Вот почему ручное управление памятью сложно - и лучше всего избегать - в противном случае вы могли бы просто выбросить «if (safe_to_delete (ptr)) delete ptr;» и быть счастливым. – us2012