[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