Tablica dynamiczna - bez podania rozmiaru

0

Witam, jak zachowa się kompilator jeżeli dla tablicy dynamicznej w c++ nie podam rozmiaru? Przy wpisaniu 5 liczb nie robi problemu, ale przy 1000 liczb wywala błąd ( Acces violation reading location, czyli pewnie próbuje zapisać na niezarezerwowanym obszarze.)

Przykład

int *tablica = new int[];
1

Utworzy ci tablicę o 0 elementach.

1

nie zarezerwuje Ci żadnego miejsca na Twoje dane. 5 liczb to jest przypadek. Moze byc i 15 i 20 i 20000 a moze byc tez i 0

1

Na trzy kompilatory jakie mam, dwa tego kodu w ogóle nie skompilują.

C:\pp\myprogs>wcl386 -q a.cpp
a.cpp(11): Error! E121: col(32) syntax error
Error: Compiler returned a bad status compiling "a.cpp"

C:\pp\myprogs>g++ a.cpp
a.cpp: In function 'int main()':
a.cpp:11:25: error: expected primary-expression before ']' token
  int *tablica = new int[];
                         ^

C:\pp\myprogs>cl /nologo a.cpp /EHsc
a.cpp

C:\pp\myprogs>
0

Rozumiem, dzięki.

0

może pomyśl o wektorach. jako ciekawostka: kiedyś gdzieś czytałam, że malloc z glibc tak alokuje pamięć, że na błędzie typu "Off by one" appka się nie wywali

1 użytkowników online, w tym zalogowanych: 0, gości: 1