Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Globalna 'char *promenljiva[5]' zeza!

[es] :: C/C++ programiranje :: Globalna 'char *promenljiva[5]' zeza!

Strane: 1 2

[ Pregleda: 7824 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

masetrt
Marko Djurovic
Programer, Omni-Explorer
Beograd

Član broj: 3129
Poruke: 228
*.ptt.yu

Sajt: www.vast.com


+2 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 15:41 - pre 268 meseci
Citat:
Ivan Dimkovic:
Nisam te bas najbolje razumeo:

Citat:

Dinamicki nizovi su bolji i imaju nekoliko nacina pristupa, new i delete su stabilniji (pogledaj bilo koju profi statistiku) od malloc i free


U kom smislu stabilniji?

Mislis da je kod u kome se koriste new/delete umesto malloc/free statisticki stabilniji?

Ili mislis da su implementacije new/delete u kompajlerima stabilnije od malloc/free?

Ja ne vidim neku veliku razliku. Ja new/delete koristim za klase, a malloc/free za memorijske bafere, nizove, itd... Niko ti ne brani da koristis malloc/free u C++ kodu, tamo gde je to moguce.




Nisam ja izmislio da su new i delete stabilniji (u oba slucaja) to su preporuke Bjarnea Stroustrupa i drugih velikih imena c++ programiranja . Pravo da ti kazem ne znam zasto. Cuo sam da ima veze ako ti paralelno radi neki Java program(zbog Javinog garbage collectora), ali stvarno nisam siguran. A dinamicki niz nije sigurniji nego lepsi za rad primer char[5] i * char sta ako se javi potreba za 8 znakova??
His majesty Grand Duke of Shumadija and Western Pomoravlje
 
Odgovor na temu

masetrt
Marko Djurovic
Programer, Omni-Explorer
Beograd

Član broj: 3129
Poruke: 228
*.ptt.yu

Sajt: www.vast.com


+2 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 15:43 - pre 268 meseci
Citat:
blue:
zasto bi uopste deklarisao a kao *a[5]

lepo deklarises kao **a i zavrsis posao. onda alociras koliko ti treba svega.
Isto tako mozes da napravis nesto ovako :

Code:

#define StrLenA(str)(strlen(str)+1)

char * StrNCopy(constant char  * str)
{
size_t duzina;
char *novistring;

if (str == NULL) str = "";
duzina = StrLenA(str);
novistring = malloc(duzina);
memcpy(novistring, str, duzina);

return novistring;
}

for (x=0;x<nesto;x++)
*a[x] = StrNCpy("nekistring");




Izvini meni ovo ni malo nije normalno

His majesty Grand Duke of Shumadija and Western Pomoravlje
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 15:44 - pre 268 meseci
Citat:
blue:
PC, UNIX, stagod. Nikad nisam pominjao mikrokontrolere, i moram da


U redu, ali ako govoriš o C-u onda ne mozeš da se ograničavaš niti na tip mašine niti na operativni sistem. :)

poz.

 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.tehnicom.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 16:07 - pre 268 meseci
Citat:
masetrt:
Ljudi zaboravite na malloc ,realloc i free od pojave c++ se koristi new i delete

tako da bi izgledalo:

char *str;

str=new char[5];

.

.

.

delete []str;

Dinamicki nizovi su bolji i imaju nekoliko nacina pristupa, new i delete su stabilniji (pogledaj bilo koju profi statistiku) od malloc i free

da mislim elegantnije je koristiti new i delete, ali to sa druge strane ima svoju cenu, a cena je brzina. Msilim ja licno preferiram vise C++ od C-a ali kada treba da se pise nesto jako brzo, ljudi jos uvek se vracaju na C. Primer su ti UNIX kerneli.

 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.tehnicom.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 16:25 - pre 268 meseci
Citat:
Dragi Tata:
I ne zaboravi na



free (a[0]);



kad završiš sa tim stringom.

e ima i jedna lepa alternativa :))) ako se umesto malloc-a koristi valloc, posto malloc alocira memoriju na heap a valloc to uradi na stack :)) a lepa stvar jeste da se stack neke funkcije uvek ocisti kada f-ja udari return :))


Inace svima koji nisu dobro odradili teoriju savetujem da procitaju

http://docs.elitesecurity.org/...amming/c-c++/c/C_Ritch_Kering/

tamo ce naci sve sto treba da znaju za pocetak a savetujem da batale ove opste popularne za 21 dan. Jer koliko sam video te za 21 dan su pisane na mnogo strana a malo kazu
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 16:31 - pre 268 meseci
Citat:
SyStemOuT:
e ima i jedna lepa alternativa :))) ako se umesto malloc-a koristi valloc, posto malloc alocira memoriju na heap a valloc to uradi na stack :)) a lepa stvar jeste da se stack neke funkcije uvek ocisti kada f-ja udari return :))


Ali kerful.

To nije iz standardne C biblioteke!

Neki procesori na kojima C radi nemaju stek. Sve alloca-like funkcije nisu prenosive.

Ubr, izvinite što toliko insistiram na stdc-u, al mislim da će se isplatiti ljudima koji tek uče.

poz.

 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 20:11 - pre 268 meseci
Citat:
SyStemOuT:
e ima i jedna lepa alternativa :))) ako se umesto malloc-a koristi valloc, posto malloc alocira memoriju na heap a valloc to uradi na stack :))


Ne znam za taj valloc ali sta ima funkcija da alocira prostor na steku kada samim definisanjem
lokalnih promenljivih one dobijaju prostor na steku...


Citat:
a lepa stvar jeste da se stack neke funkcije uvek ocisti kada f-ja udari return :))


Pa zapravo ne ocisti se vec se %esp vrati tamo gde je i bio pre pozivanja funkcije pa sledeca funkcija prosto pise preko toga... zato na primer lokalne promenljive imaju slucajne vrednosti...


vitamini, minerali, suplementi...
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 20:18 - pre 268 meseci
Citat:
filmil:
Kod programa za PC-je si u pravu. Nema potrebe da se bilo šta globalizuje.

Probaj da napises engine za 3d grafiku bez globalnih promenljiva.
Podrazumevam da engine treba da ima jednu matricu u kojoj upisuje i iz koje cita podatke o objektima na sceni.
Kako ces to da izvedes ako matrica nije globalna?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.verat.net



+7174 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 22:17 - pre 268 meseci
Tako sto svakoj funkciji prosledis neku vrstu 'handle' (pointera) na instancu "scene" - a u toj strukturi potrpas i sve neophodne matrice, tj. sve sto identifikuje neku scenu. Nije to nista cudno, na taj nacin radi Win32 API, na primer - HWND ti je na primer pointer na neku strukturu prozora, i svaka funkcija koja radi sa prozorima zahteva da joj prosledis pointer na tvoj prozor. Nigde ne postoji neki globalni skup prozora, vec se memorijski prostor alocira kad ti pozoves CreateWindow() i sl.

Globalne promenljive treba izbegavati, jer kad budes jednom presao na multithreaded programiranje, doziveces svakojake probleme kada dve niti pokusaju da pristupe istoj globalnoj varijabli. Bukvalno sada sebi pravis dodatni posao, koji ces morati da resavas kad ti kupac bude zahtevao da biblioteka podrzava multithreaded zahteve.


Zastita, moj ti je savet da pre nego sto pocnes da se bavis sa high-level 3D grafikom dobro proucis programski jezik u kojem hoces da pises svoj paket. Iz ovoga sto sam video, ti jako slabo vladas C-om - to nije nikakva kritika, vec savet da naucis programski jezik, jer ono sto ti hoces da pises zahteva odlicno poznavanje programskih jezika i tehnika programiranja.


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.bankerinter.net

Sajt: www.mycity.rs


+1 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 22:33 - pre 268 meseci
Vidis, to mi nije palo na pamet...
Mada, sta time dobijam?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.verat.net



+7174 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!04.04.2002. u 22:58 - pre 268 meseci
Sta dobijas?

Pa.. dobijas:

1. Mogucnost vise instanci "scene" ili kojeg vec objekta

2. Mogucnost multithreadinga - recimo ako neka aplikacija crta u vise prozora razlicite stvari, a koristi isti engine

3. Preglednost koda i lakse debagovanje

4. Veoma laku API sintaksu


Opet, kupi K&R skriptu, "Osnove Programiranja" i slicnu literaturu kako bi naucio odakle je sve to poteklo i kako se planira jedan ozbiljan projekat kao sto je ta tvoja 3D biblioteka. Baci pogled i na neke projekte u tom poslu, od njih mozes da usvojis sve sto je njihov competetive advantage - fleksibilnu arhitekturu, itd..


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

masetrt
Marko Djurovic
Programer, Omni-Explorer
Beograd

Član broj: 3129
Poruke: 228
*.ptt.yu

Sajt: www.vast.com


+2 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!05.04.2002. u 00:32 - pre 268 meseci
Citat:
SyStemOuT:
[
da mislim elegantnije je koristiti new i delete, ali to sa druge strane ima svoju cenu, a cena je brzina. Msilim ja licno preferiram vise C++ od C-a ali kada treba da se pise nesto jako brzo, ljudi jos uvek se vracaju na C. Primer su ti UNIX kerneli.



U potpunosti se slazem sa tobom .Ovde su spominjani mikrokontroleri. Ali tu se ne koristi pravi c nego neki c script(nemojte bukvalno da shvatite, ipak se sve svodi na neki asembler) Na svakoj masini jacoj od 386 razlika je totalno neprimetna i za neke ogromne cifre (mereno gigabyte-vima
His majesty Grand Duke of Shumadija and Western Pomoravlje
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!05.04.2002. u 09:11 - pre 268 meseci
Citat:
masetrt:
mikrokontroleri. Ali tu se ne koristi pravi c nego neki c script(nemojte


Pozdrav. Sto se mikrokontrolera (i 'malih racunara') tice, rekao bih da je GCC pravi pravcati c kompajler. Al dobro, ovako odoh u off-topic.

poz.


 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!05.04.2002. u 10:50 - pre 268 meseci
Ljudi, nemojte pogresno da me shvatite, ali OVOLIKA prepiska zbog "char *promenljiva[5]" ... shvatate sta hocu da kazem?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Jovan Marjanovic
HP GmbH
Stuttgart

Član broj: 942
Poruke: 456
*.net.external.hp.com

ICQ: 42
Sajt: www.hp.com


Profil

icon Re: Globalna 'char *promenljiva[5]' zeza!05.04.2002. u 13:06 - pre 268 meseci
Ma leko, vidis da smo vec uleteli u prepirku koje bolji programer od svih nas.
Isto tako moram da kazem da mi je jako drago sto pola vas nije razumelo onaj mali snippet koda koji sam napisao samo za vas.
BLUE ROCKS!
Za automatsko dobijanje Super Moderatorskog statusa na Elitesecurity forumima pritisnite Alt+F4
 
Odgovor na temu

[es] :: C/C++ programiranje :: Globalna 'char *promenljiva[5]' zeza!

Strane: 1 2

[ Pregleda: 7824 | Odgovora: 34 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.