Divná alokácia poľa [C]

Programovacie jazyky, rady, poradňa...
ChallengerQo
Expert
Expert
Používateľov profilový obrázok
Príspevky: 183
Registrovaný: 05 júl 2009, 17:08
Bydlisko: Kodaň

Divná alokácia poľa [C]

Príspevok od používateľa ChallengerQo »

Zdravím,
Vie mi niekto vysvetliť, ako je možné, že tento kód funguje bezchybne a ani valgrind mi nehlási žiadne invalid ready?

Kód: Vybrať všetko

#include <stdio.h>

int main(int argc, char const *argv[])
{
	int x;

	printf  ( "Zadaj velkost pola:" );
	scanf 	( "%d", &x );	
	int a [ x ];

	// a [ 10 ] = 15;

	return 0;
}
Mne to príde ako suverénny vstup do pamäte, ktorá mi nepatrí..
Normálne to predsa riešim tak, že si na-mallocujem potrebne veľké pole, a potom mám istotu, že pamäť je moja.
Dík za odpovede, fakt neviem, čo si mám o tom myslieť.
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Divná alokácia poľa [C]

Príspevok od používateľa pcsiete »

Ako si testoval ze to funguje? Asi ti kompilator zoberie x ako nejaku konstantnu hodnotu, vytvori pole o tej velkosti a ty potom pises na a[10]. Pamat sa prepise, nic ale nie je nevalidne. Pracujes v ramci svojho zasobnikoveho ramca (blba slovencina :) ) a teda nezasahujes do zelj pamate.
Pamat na zasobniku patri cela tebe.

//autoeditácia príspevku (18 Máj 2013, 17:23)
Inak ak tu array alebo tie premenne nastavujes a dalej s nimi nepracujes (a nepouzivas volatile), kompilator moze premenne vynechat z dovodu setrenia pamate. Tak sa nemusi vyhodit ziadna chyba.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Divná alokácia poľa [C]

Príspevok od používateľa metthal »

pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Divná alokácia poľa [C]

Príspevok od používateľa pcsiete »

metthal napísal:C99?
Dosť záleží od kompilátora.

ChallengerQo: v čom to skúšaš?
ChallengerQo
Expert
Expert
Používateľov profilový obrázok
Príspevky: 183
Registrovaný: 05 júl 2009, 17:08
Bydlisko: Kodaň

Re: Divná alokácia poľa [C]

Príspevok od používateľa ChallengerQo »

iba zabudovaný kompilátor sublime texte ... nejakým gccčkom som to nepreháňal, skôr ma ten valgrind prekvapil ... ale keď som sa pozrel na odkaz metthal-a, tak mi je to jasné už.
Napísať odpoveď