C kerdes, NULL ptr

Andras Tantos andras at tantosonline.com
Tue Jul 10 22:54:28 CEST 2007


Hali!

Nem, nem jol tudod.

A program le fog fordulni, de a C++ szabvany szerint illegalis (gondlom a C 
szerint is). Ez azt jelenti, hogy a program barmit csinalhat, a nuklearis 
raketak inditasatol kezdve a viragos kert ulteteseig. Amit valoszinuleg 
tenni fog, az az, hogy valoban megprobal a 0-s cimre irni, de hogy ebool mi 
lesz, az platform fuggo. Bizonyos CPU-knal (ARM) itt van a reset vektor. 
Masoknal mas valami van itt. Ha a program virtualis cimzessel, fut, jo 
esellyel a proci laphatar-ellenorzese el fogja kapni, es page-fault-tal, 
vagy valami hasonloval leall a progi.

Osszefoglalva, nem, nem szabad ilyet csinalni.

Udv,
Tantos Andras


----- Original Message ----- 
From: "Fuzesi Arnold" <arnold.fuzesi.lista at gmail.com>
To: <elektro at tesla.hu>
Sent: Tuesday, July 10, 2007 1:04 PM
Subject: Re: C kerdes, NULL ptr


Illetve sztem ez az if felesleges...
if (checksum){*checksum+=tmp_checksum}

Pont ez volt a kérdés lényege. Hogy ha NULLptr-be irkálok veszettül, az a
kutyát nem érdekli.
Jóltudom?

A.
----- Original Message ----- 
From: "Fuzesi Arnold" <arnold.fuzesi.lista at gmail.com>
To: <elektro at tesla.hu>
Sent: Tuesday, July 10, 2007 9:55 PM
Subject: Re: C kerdes, NULL ptr


NULLptr volt a lényeg, de azért kösz, bár kicsit bugos :)
{*checksum+=tmp_checksum}

0 esetén nem csinal hülyeséget, hanem 256 elemű a tömb...

A.
----- Original Message ----- 
From: "Moczik Gabor" <pm at progzmaster.hu>
To: <elektro at tesla.hu>
Sent: Tuesday, July 10, 2007 9:49 PM
Subject: Re: C kerdes, NULL ptr


Info wrote:
> Így nem lenne jobb ? (és gyorsabb)
>
>  uint config_checksum(uchar* buf, uchar length, uint* checksum)
>  {
>      uint tmp_checksum=0;
>      do{tmp_checksum+=(*buf++)}while(--length);
>      if (checksum){*checksum=tmp_checksum}
>      return tmp_checksum;
>  }

Gyorsabb, bar azert nem kene egy sorba irni az egeszet...
Tovabba egy lepes lenne a fault-tolerant tervezes fele, ha length=0 eseten
nem csinalna hulyeseget, ehhez mindossze annyi kene csak, hogy

while(length--) {
     tmp_checksum+= *buf++;
}


-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))

-----------------------------------------
          elektro[-flame|-etc]

-----------------------------------------
          elektro[-flame|-etc]

-----------------------------------------
          elektro[-flame|-etc]





More information about the Elektro mailing list