Get the latest tech news

C and C++ prioritize performance over correctness (2023)


Friday, August 18, 2023. PDF The original ANSI C standard, C89, introduced the concept of “undefined behavior,” which was used both to describe the effect of outright bugs like accessing memory in a freed object and also to capture the fact that existing implementations differed about handling certain aspects of the language, including use of uninitialized values, signed integer overflow, and null pointer handling.

In the end, the C++ standards committee put up “strong resistance against” the idea of defining signed integer overflow the way every programmer expects; the undefined behavior remains. If you do make a mistake and pass in a comparison function that returns inconsistent results or accidentally reports that any value is less than itself, that’s undefined behavior: std::sort is now allowed to do whatever it likes, including walking off either end of the array and corrupting other memory. It also seems like there must be a middle ground where programmers retain most of the control they have in C and C++ but the program doesn’t crash when sorting NaNs or behave arbitrarily badly if you accidentally dereference a null pointer.

Get the Android app

Or read this on Hacker News

Read more on:

Photo of Performance

Performance

Photo of C++

C++

Photo of correctness

correctness

Related news:

News photo

Taming the UB Monsters in C++

News photo

Linux Kernel 6.14 Is a Big Leap Forward In Performance, Windows Compatibility

News photo

Linux kernel 6.14 is a big leap forward in performance and Windows compatibility