У меня есть следующий код:
int* CoverFunction(){
int* result =new int[3];
result[0]=1;
result[1]=2;
result[2]=3;
return result;
}
Это дает мне следующее предупреждение:
предупреждение: возвращен результат локальной переменной [-Wreturn-local-addr]
Но не использует ли новое ключевое слово, чтобы это не было проблемой? Я рискую удалить мои данные после завершения этой функции или безопасно ли вы жить в стеке? И если он безопасно живет в стеке, как мне избавиться от предупреждения?
Когда вы используете новый /malloc, память выделяется из кучи.
Таким образом, в этом случае нет опасности, что переменная выходит из сферы действия, но остается вопрос, кто удалит эту память?
И я считаю, что вы не можете избавиться от этого предупреждения, даже если вы используете malloc.