我有下面的代碼,當在valgrind下運行時,仍然表示某些塊可以訪問。雖然代碼沒有任何明確的泄漏。 這是爲什麼發生。 請幫忙? 的valgrind跡是 ==5059== 32 bytes in 1 blocks are still reachable in loss record 1 of 1
==5059== at 0x4C2C20C: operator new(unsigned long)
Code like this是未定義的行爲,因爲它訪問不在範圍內的局部變量(其生存期已結束)。 int main() {
int *a;
{
int b = 42;
a = &b;
}
printf("%d", *a); // UB!
return 0;
}
我的問題:是否有自動檢測這樣的錯誤的好技術?它似乎應該是可檢