| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 10.07.08 Príspevky: 190 Témy: 40 Bydlisko: BA | Napísal m4r14n: 17.11.2012 18:45 | |
|
Zdravim .. Ked v C alokujem char* a potom ho zmazem prebehne vsetko v poriadku .. ale ak ho este pred zmazanim naplnim nejakym stringom tak potom ak ho chcem zmazat vyhlasi segmentation falut.. Neviete reco to hlasi chybu? .. dakujem Kód: char *p = new char[200]; p = "nejaky text"; delete [] p;
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 17.11.2012 19:27 | |
|
Zle, zle, zle.
Ty si alokuješ 200 charov na halde a na takto alokované miesto ti ukazuje premenná p (typu char ukazateľ) Potom si p prepíšeš na adresu reťazca zo zásobníku. No a vtedy je tých tvojích 200 charov na halde nenávratne preč.
Na kopírovanie reťazcov preto používaj funkcie zo string.h (a síce strcpy/strncpy)
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 10.07.08 Príspevky: 190 Témy: 40 Bydlisko: BA | Napísal autor témy m4r14n: 17.11.2012 19:42 | |
|
Vdaka .. s str cpy to ukguje ako ma .. takze ked napisem p = "nejaky text"; , tak vytvorim na stacku nejaky novy string a na tie povodne chary na heape uz nic neukazuje? .. lebo akosi tomu nechapem preco sa to prave takto chova ..
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 17.11.2012 19:59 | |
|
Tieto klasické reťazce v Cčku sú len polia charov. Takže je to v podstate ekvivalentné s takýmto kódom Kód: int * a = new int[3]; int b[3] = {1,2,3}; a = b; Vidíš, kde sa ti stratilo pole na heape?
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 10.07.08 Príspevky: 190 Témy: 40 Bydlisko: BA | Napísal autor témy m4r14n: 17.11.2012 20:04 | |
|
Aha .. uz chapem. Dakujem za vysvetlenie
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| char pole do int v Assembler, C, C++, Pascal, Java | 0 | 350 | 19.01.2011 22:38 1daemon1 | | Banalny priklad-char. tranzistora v Elektronika | 10 | 1117 | 07.03.2007 12:43 Taomas | | C++ problem s char v Assembler, C, C++, Pascal, Java | 4 | 421 | 07.10.2012 18:52 Fico | | Zmena char na int v Assembler, C, C++, Pascal, Java | 6 | 507 | 02.02.2012 23:18 street_punk | | C Int to Char v Assembler, C, C++, Pascal, Java | 2 | 322 | 20.10.2012 15:13 faraon | | odelenie num a char v PHP, ASP | 2 | 342 | 10.11.2009 20:22 pilná lama glama | | mer. char.zenerovej diody v Elektronika | 0 | 486 | 10.01.2012 20:34 p4tooo | | testovanie prvku pola char [C++] v Assembler, C, C++, Pascal, Java | 6 | 474 | 06.07.2010 8:09 koso | | C - konverzia char na int v Assembler, C, C++, Pascal, Java | 14 | 677 | 02.04.2011 18:16 M4rek | | DELETE v Databázy | 1 | 766 | 11.10.2007 19:13 stenley | | C: z getchar() do char *retazec v Assembler, C, C++, Pascal, Java | 9 | 989 | 08.10.2010 11:54 Blackshadow | | Práca s dynamickou pamäťou v char v Assembler, C, C++, Pascal, Java | 2 | 366 | 30.04.2012 14:10 elementstyle | | Update stĺpca char cez regulárny výraz v Databázy | 2 | 660 | 29.10.2011 16:40 camo | | procedure delete v Delphi, Visual Basic | 6 | 669 | 15.12.2009 23:17 stopa27 | | Delete problém v PHP, ASP | 20 | 827 | 30.11.2008 20:32 stenley | | delete subor v Ostatné programy | 7 | 699 | 18.08.2008 0:37 dedko45 |
| Nemôžete zakladať nové témy v tomto fóre 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
|
|