This blog post feels weirdly superficial (haven't looked at the video/presentation).<p>> <i>Array new and delete</i><p>> <i>When you write new in your applications, you are creating unmanaged objects, and you are then required to call delete later on if you don’t want to risk leaks. So don’t use new and delete at all, as this is considered a C++ bad practice. Better yet, working in modern C++ allows you to use smart pointers and Standard library container classes that make it easier to match every new with exactly one delete.</i><p>The text is reasonable, but why is the heading "<i>array</i> new and delete"? There is a difference between new/delete and new[]/delete[], and calling delete[] on something created by new or vice versa is indeed going to cause problems. But that problem (and hence the section title) is more or less orthogonal to what the section body talks about.<p>Edit: The corresponding slide in the presentation does talk specifically about this kind of mismatch. It also comes to the same conclusion as the text ("just use the STL"). The connection between title and body was apparently lost in translation.<p>Maybe as more general feedback, I'm getting a strange vibe from this blog. Lots of "top 5 <C++ thing>" posts, links to Patreon-gated articles, ads for blog-owner-written books... Which would all be fine, but that plus an inconsistent summary of someone else's talk raises a lot of warning signs for me.
Various smart pointer types solve the uninitialized pointer problem. You can even have variants that are guaranteed to be non-null (unlike, say, java, where null references can escape during initialization, especially in multithreaded code)
weirdly, this article advises to use unsigneds for array offsets, which is a fine way to overwrite the heap - when you accidentally decrement an array index past 0.