<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-7" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<blockquote cite="mid1109253703.10225.9.camel@base-06.geo.auth.gr"
type="cite">
<pre wrap="">
int &operator [] (int i) {
if (i>size) std::cout<<"Index exceeds matrix dimensions."<<std::endl;}
};
</pre>
</blockquote>
Τι θα σου επιστρέψει εδώ αυτή η method? έναν pointer σε int (ορίζεται
ως int &operator[]). Στο body της method, που είναι το return
<some_int_pointer>; ΠΟΥΘΕΝΑ, άρα μόλις κάνει exit, θα επιστρέψει
έναν pointer στο... κάπου.<br>
<blockquote cite="mid1109253703.10225.9.camel@base-06.geo.auth.gr"
type="cite">
<pre wrap="">
aaa[12]=3;
</pre>
</blockquote>
Aαααα, πολύ ωραία... Το aaa[12] ουσιαστικά μεταφράζεται σαν call to
(int &operator[](12)), το οποίο, ότι και να γίνει, θα επιστρέψει
έναν int pointer στο... κάπου.<br>
Εκεί λοιπόν, το ωραίο προγραμματάκι προσπαθεί να αντιστοιχίσει στη θέση
μνήμης που δείχνει το aaa[12], δηλαδή στο... κάπου, τον integer 3. Τι
παθαίνουμε τότε, όταν αντιστοιχούμε στο... κάπου, ...κάτι;<br>
<br>
ΑΥΤΟ:<br>
<br>
<blockquote cite="mid1109253703.10225.9.camel@base-06.geo.auth.gr"
type="cite">
<pre wrap="">Segmentation fault
</pre>
</blockquote>
<br>
Από τέτοια μικρά λαθάκια βγάζουν λεφτά όσοι πουλάνε security... Προσοχή
στο πως γράφετε κώδικα!<br>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-7">
<title>.signature.html</title>
<p><big>Antonis Valakas</big></p>
<span style="font-style: italic;">Systems Consultant</span><br>
Multiservice Networks - <span style="font-weight: bold;">Intracom SA<br>
</span>
<pre><span style="font-weight: bold;">email: avalak_at_intracom.gr</span></pre>
<pre><span style="font-weight: bold;"> www: <a class="moz-txt-link-abbreviated" href="http://www.intracom.gr">www.intracom.gr</a></span></pre>
<pre><span style="font-weight: bold;">
</span></pre>
</div>
</body>
</html>