tarafından bu işaretçi sarkan. Adres dezenfektanı ile bu tür hataları yakalamak mümkün mü?std :: string_view geçici ipte yakalamak Asan
UPD.
bu hatayı Bildirilen:
tarafından bu işaretçi sarkan. Adres dezenfektanı ile bu tür hataları yakalamak mümkün mü?std :: string_view geçici ipte yakalamak Asan
UPD.
bu hatayı Bildirilen:
Benim tahminim (eğer derleyici versiyonunu sunmadınız) Asan bunu sterilize edilemez böylece operator <<
dıştan uygulanan olmasıdır ve hatası (libandC++ ile Asan'ı yeniden kurmadıkça) algıla. Sadece yığın adresi tespitlerde, değil tahrip geçici dönüş değerlerine göre dönmek
call operator delete(void*)
.L17:
movq %rbx, %rsi
movl std::cout, %edi
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
call std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
'std :: cout << bar' yerine, örneğin' std :: string bar2 = bar; 'yazın. – vladon
@vladon Bu çok farklı bir durum. Dize 16 karakterden uzun olduğu sürece benim için (yani, 'yığın-kullan-sonra-ücretsiz' raporlar) çalışır. Daha kısa bir dizi için SSO alırsınız, yani veri yığında tutulur, böylece Asan artık yığın hatalarını tespit edemez. – yugr
de bir şey bulamadım: İşte benim GCC 6.2 (ı
c++1z
erişimi yok gibi ben biraz Repro değiştirilmiş) ile ne olsun. – Laurijssen