Обходит ли использование new / malloc предупреждение о локальных указателях?

0

У меня есть следующий код:

int* CoverFunction(){
    int* result =new int[3];
    result[0]=1;
    result[1]=2;
    result[2]=3;
    return result; 
}

Это дает мне следующее предупреждение:

предупреждение: возвращен результат локальной переменной [-Wreturn-local-addr]

Но не использует ли новое ключевое слово, чтобы это не было проблемой? Я рискую удалить мои данные после завершения этой функции или безопасно ли вы жить в стеке? И если он безопасно живет в стеке, как мне избавиться от предупреждения?

  • 0
    Этот код не должен выдавать предупреждение. Это ваш настоящий код или вы печатаете по памяти?
  • 0
    Это фактический код. И все же это выдает это предупреждение (заметьте, я использую странную версию catkin_make, а не обычный компилятор).
Показать ещё 2 комментария
Теги:
pointers
warnings
compiler-warnings

1 ответ

2
Лучший ответ

Когда вы используете новый /malloc, память выделяется из кучи.

Таким образом, в этом случае нет опасности, что переменная выходит из сферы действия, но остается вопрос, кто удалит эту память?

И я считаю, что вы не можете избавиться от этого предупреждения, даже если вы используете malloc.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню