Standardın,kayıttan yürütme kuralını UB olduğu konusunda bir gerçeği her zaman biliyordum. Bununla birlikte,Dereference null her zaman UB değil?
(Link 1) der
vep = 0; * P; doğal olarak bir hata değildir.
(Link 2) bir bağlantı sağlar lvalue inanıyorum (bir lvalue
dönüştürülür sürece p null olduğunda
* p bir hata olmadığını söylüyor Bu bir yazım hatasıdır ve muhtemelen değerini okumalıdır lvalue, rvalue'a dönüştürülür.)
Bağlantı 1 ayrıca der
char * p = 0; Sadece olarak okuyabilir Char * q = & * (p)
"tanımsız değil" dir, ya da en azından iyi tanımlanmış uygulama tanımlı
bir dil avukat bir sağlayabilir neler olduğuna dair yetkili açıklama?
Ben bir dil avukatı değilim ama bağlantıların okunması, sadece değerinin kullanılmasıyla kendi başına değil, bir boş göstericinin kopyalanmasıdır. Ve evet, bir yazım hatası gibi görünüyor, rıhtım için lvalue olmalıdır, bu şekilde link1'de alıntılanmıştır. Statik üye durumunda, sadece operatörün * statik türünün gerekli olduğunu ve link1'in de görebildiğim kadarıyla tutarlı olduğunu düşünüyorum. – drRobertz
Eğer uygulamalar segfault yaparsa, GERÇEK UB? Bunu düşünemiyorum. – Donnie