Zdravim, mam dotaz na pointery.
Kdyz alokuju pamet pomoci new, a nasledne do ni ulozim retezec o vetsi velikosti nez jsem alokoval, nevyhodi mi to chybu, ani nespadne, nechapu proc ? :
...
char *p = new char[ 5 ];
std::cin >> p; // Tady zadam retezec > 5 ... "Nejaky text"
std::cout << p << std::endl; // Tady se mi retezec bez problemu vypise ...
delete []p;
...
Fórum › C / C++
C++ pointery
protoze pamet jde pekne po sobe... akorat si neco znicis za tim. Ale kdyz tam budes zapisovat dost usilovne, casem narazis na pamet, kam uz nemas pravo zapisovat -> hodi ti to segmentation fault (u win to jen padne)
nemusi alokovat vic.. staci pouzivat funkce, ktere nactou jen urcity pocet znaku - nebezpecny sou hlavne ty, co nemaj omezeni velikosti
a v linuxu existuje utilita valgrind - ohlida temer vse co jde u pointeru ohlidat
Pokud to děláš na windows ve visual studiu, tak to nespadne, protože se v režimu Debug alokuje vždy více paměti (pár bajtů na začátku i na konci). Je to kvůli ladění a debugger by to měl detekovat. V režimu release už to většinou spadne. Nejlíp to uvidíš, když se podíváš do paměti v okně debuggeru.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pointery v C — založil chef06
Problém s pointery. — založil Sám_už_nevím
2D pole a pointery — založil Maty
Problém s pointery — založil oxidián
Moderátoři diskuze