[Github-comments] [geany/geany-plugins] Splitting a snowman in half crashes Geany with Spell Check (inserting a space before Unicode VARIATION SELECTOR-16) (#1041)

elextr notifications at xxxxx
Mon Dec 7 13:07:49 UTC 2020


@b4n, yes, but std::vector is a library type, not a builtin, which keeps track of its size and its capacity (which is why it is possible to insert the assert, its has size to compare to, but in C since nothing saves the size of array you malloced no automatic assert can be inserted in an index operation).  Operator[] on a std::vector is not a builtin, its an overloaded operator member function that returns a reference to the indexed member.  So your `&vector[0]` has to call `vector.operator[](0)` before taking the address of the referenced object when it returns.  But of course you can't reference a non-existent object, which is why its UB to do so.  

The std::vector has an alternative member function `vector.at()` that is always checked and which throws an exception if the index is out of range.  But of course thats slower, whereas operator[] is as fast as C, so all premature optimisers (basically all programmers :) use it.

As I keep saying C++ is not C :grin:

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/issues/1041#issuecomment-739907326
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.geany.org/pipermail/github-comments/attachments/20201207/3563b7d8/attachment-0001.htm>


More information about the Github-comments mailing list