Re: Some errors in MIT's intro C++ course
On Sep 13, 1:21 pm, kwikius <a...@servocomm.freeserve.co.uk> wrote:
On Sep 12, 5:31 pm, Marc <marc.gli...@gmail.com> wrote:
kwikius wrote:
On Sep 11, 9:05 pm, James Kanze <james.ka...@gmail.com> wrote:
On Sep 11, 3:22 pm, kwikius <a...@servocomm.freeserve.co.uk> wrote:
#include <vector>
int main)
{
std::vector<int> v(100U, 0);
v[100] = v[-1];
}
compiled without complaint ... didnt crash .. Great!
Program must be working .. ;-)
It crashes with all of the compilers I use.
That must be a very specialized list.
A compiler that guaranteed to crash would be a poor compiler
as it would have to perform runtime checks (ignoring it uses
some hardware technology)
There's a way of turning it off, if the profiler says you have
to. But you only do so if the profiler says you have to.
[...]
I think that Mr Kanze is misleading to say that using vect[N]
where N is out of range will cause a crash..
It's true that it's a QoI issue, but any good implementation
will cause a crash.
Dont rely on that! Much better to invoke an exception ( so use
vect.at(N) ).. even if uncaught you are less likely to be
running in a dangerous state.
Either the profiler says that you can't keep the test, in which
case, you can't use at (since it also does the test), or it
doesn't, in which case, you can use the full checking version.
(Remember too that a lot of accesses will be through iterators,
not through []. And they don't have any equivalent of at.)
--
James Kanze