IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @246
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Ochrana knižníc

Ponúkame kopletný sortiment systémov na zabezpečenie kníh! (RFID, EM, RF) www.orisplus.sk

Zaregistruj sa!

Tvoj názor stojí peniaze. Vyplňte dotazník a zarobte si! www.marketagent.com

Kúpa auta v Rakúsku

bezpečnejšia. Rakúsko, ako druhá krajina Európskej únie po Slovenskej autoviny.zoznam.sk

Priprav sa na futbalové EURO

Exkluzívna súťaž o Ford Fiesta! Kurzová superponuka a bonus 100€ https://www.tipsport.sk

Ako schudnúť 10 kg

Ktorý je najlepší spôsob chudnutia? Prečítajte si tipy na boj s nadváhou www.news2channel.net

malloc retazec

Zaslať odpoveď
AutorSpráva
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: Ne 29.01.12 14:14Odpovedať s citátomNávrat hore

Jasne, ak kompilujes pre C++, navratova hodnota realloc treba pretypovat. V cistom C by sa pretypovat nemala, ja som ti zasielal ukazku v C, kedze podla nazvu temy ( malloc ) pracujes s C.

K problemu: pod g++ mi ziadne chyby nehadze, po kontrole valgrindom vypise:
citácia:
All heap blocks were freed -- no leaks are possible


Takze ti pomoct neviem. Skus sa pohrat s debuggerom, krokuj program a zisti kde pada, aku hodnotu ma pointer pole na riadku, kde sa uvolni, atd. Skus napr vynechat volanie funkcie vymen, atd atd. Viac ti poradit nedokazem, nakolko mne to bezi v poriadku. Jedine, co som musel pridat do programu, aby sa vobec skompiloval ( nechapem, co za mix kniznic to microsoft ma, ale budis... ) su tieto hlavicky:
kód:
#include <stdlib.h>
#include <string.h>
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
Carm@gedon
Užívateľ
Užívateľ

Založený: 18.12.2006
Príspevky: 28

PríspevokZaslal: Ne 29.01.12 15:49Odpovedať s citátomNávrat hore

Fico napísal:
Jasne, ak kompilujes pre C++, navratova hodnota realloc treba pretypovat. V cistom C by sa pretypovat nemala, ja som ti zasielal ukazku v C, kedze podla nazvu temy ( malloc ) pracujes s C.

K problemu: pod g++ mi ziadne chyby nehadze, po kontrole valgrindom vypise:
citácia:
All heap blocks were freed -- no leaks are possible


Takze ti pomoct neviem. Skus sa pohrat s debuggerom, krokuj program a zisti kde pada, aku hodnotu ma pointer pole na riadku, kde sa uvolni, atd. Skus napr vynechat volanie funkcie vymen, atd atd. Viac ti poradit nedokazem, nakolko mne to bezi v poriadku. Jedine, co som musel pridat do programu, aby sa vobec skompiloval ( nechapem, co za mix kniznic to microsoft ma, ale budis... ) su tieto hlavicky:
kód:
#include <stdlib.h>
#include <string.h>

pracujem s C
slusim to skompilovat v dev++
inak nevies este ze co vypise napr:
*(str)+1 //neni to nahodou blbost ?
Dik

//edit: v Dev mi to ide v pohode, tak nieco vo Visualku bude zle... :/
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: Ne 29.01.12 16:12Odpovedať s citátomNávrat hore

Ak pracujes s C, tak nemozes pripojit hlavicku <iostream>, ta je totiz pre jazyk C++. Taktiez plati to, ze by si nemal pretypovat navratove hodnoty malloc/realloc/calloc a treba pripojit kniznice, ktore som uviedol. Visual Studio zrejme podla iostream usudilo, ze ide o C++ kod a tak ho potom aj kompilovalo, preto tie chyby.
Zapis *(str)+1 je chybny, nemal si namysli *(str+1) ? Ak ano, tak je to ekvivalent zapisu str[1];
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
Carm@gedon
Užívateľ
Užívateľ

Založený: 18.12.2006
Príspevky: 28

PríspevokZaslal: Po 30.01.12 0:43Odpovedať s citátomNávrat hore

Fico napísal:
Ak pracujes s C, tak nemozes pripojit hlavicku <iostream>, ta je totiz pre jazyk C++. Taktiez plati to, ze by si nemal pretypovat navratove hodnoty malloc/realloc/calloc a treba pripojit kniznice, ktore som uviedol. Visual Studio zrejme podla iostream usudilo, ze ide o C++ kod a tak ho potom aj kompilovalo, preto tie chyby.
Zapis *(str)+1 je chybny, nemal si namysli *(str+1) ? Ak ano, tak je to ekvivalent zapisu str[1];

ne prepac... pomylil osm sa ma to byt (*str)+1... to as vrati prvy znak pola a pripocita k nemu +1 nie?
cize napr mam pole "AHOJ " tak vrati A+1 a to je B ... je to spravne ?
//edit: uz viem preco mi hadze error... lebo pre '\0' nieje alokovane miesto v poli
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: Po 30.01.12 10:55Odpovedať s citátomNávrat hore

Carm@gedon napísal:
cize napr mam pole "AHOJ " tak vrati A+1 a to je B ... je to spravne ?

Ano, spravne. (*str) == str[0], cize znak na danej adrese. A ak uz pripocitas nejaku hodnotu k znaku, tak to bude znak z danou ASCII hodnotou.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd