int* func()
{
int* i=new int[3];
return i;
}
void funcc()
{
int* tmp=func();
//delete allocated memory after use
delete[] tmp;
}
Я считаю, что компилятор при компиляции funcc не может знать, что нужно удалить 3 int, например, если func находится в другом файле.
deleteчаще всего будет использоваться вне области видимости в том смысле, что вы не отпускаете указатель в той же области, в которой вы его выделяете. Право собственности на указатель определяется разработчиком приложения. Точка, в которой он должен быть выпущен, может не совпадать с точкой, в которой он был выделен. - person Brandon Buck   schedule 23.04.2014