Здравствуйте, 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*.