Re[3]: Почему CLion и VS не предупреждают?
От: pilgrim_ Россия  
Дата: 03.05.23 14:51
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Ни один не показал проблему в коде



GCC с -Wall -O2 (без оптимизации почему-то не показывает варнинг) и PVS предупреждают об использовании локального адреса за пределами функции.

https://gcc.godbolt.org/z/dfo861h1M

  GCC
<source>: In function 'int main()':
<source>:24:27: warning: using a dangling pointer to 't' [-Wdangling-pointer=]
   24 |     std::cout << t->V1 << "\n";
      |                           ^~~~
<source>:11:10: note: 't' declared here
   11 |     char t[2];
      |          ^
<source>:24:27: warning: 't' may be used uninitialized [-Wmaybe-uninitialized]
   24 |     std::cout << t->V1 << "\n";
      |                           ^~~~
In file included from /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/iostream:41,
                 from <source>:1:
/opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/ostream:662:5: note: by argument 2 of type 'const char*' to 'std::basic_ostream<char, _Traits>& std::operator<<(basic_ostream<char, _Traits>&, const char*) [with _Traits = char_traits<char>]' declared here
  662 |     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
      |     ^~~~~~~~
<source>:11:10: note: 't' declared here
   11 |     char t[2];
      |          ^


  PVS, более человеческое предупреждение
<source>:16:1: warning: V507 Pointer to local array 't' is stored outside the scope of this array. Such a pointer will become invalid.


Но оба не предупреждают об утечке C1*.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.