REKLAMA

Diabeł tkwi w szczegółach: C/C++ (część 1)

Programując w językach C lub C++, bardzo łatwo jest popełnić błąd. Powodówmożna wymienić kilka. Po pierwsze, oba języki są stosunkowo niskopoziomowe,a więc wymagają ręcznego zarządzania pamięcią dynamiczną, dbania o poprawnośćwskaźników, jak i dbania o wiele innych aspektów. Po drugie, nie wszystkiezachowania obu języków są w pełni zdefiniowane - standardy C i C++ wskazujązachowania nie zdefiniowane w ogóle (ang. Undefined Behavior, dalej UB), nie zdefiniowanew standardzie, ale definiowane przez konkretne implementacje (ang.Implementation-Defined Behavior), oraz takie, które mogą zostać zaimplementowanena więcej niż jeden sposób, ale niekoniecznie muszą zostać jawnie zdefiniowanew dokumentacji (ang. Unspecified Behavior). Niniejszy artykuł ma na celu przedstawienieczytelnikowi kilku przykładów, w których pomimo iluzorycznej trywialnościkodu, znajdują się subtelne błędy lub niejasności.