Witam mam pytanie czy w C++ jest jakieś odgórne ograniczenie na wielkość tworzonej przez użytkownika tablicy, czy tez wielkość ta jest ograniczona jedynie zasobami pamięci. . .
teoretycznie - brak, praktycznie im większa tablica tym więcej potrzeba pamięci i tym wolniej działa aplikacja
Jest ograniczona, tylko już niepamiętam do ilu, gdy używałem Dev’a to miałem ten problem, ale ta wartość jest dość duża (~1000000)
Jest ograniczona ilością pamięci, kompilator powinien zgłosić błąd albo operator new rzuci wyjątek albo malloc zwróci NULL jeśli będziesz chciał zarezerwować za dużo. Przykłady z g++:
int arr[INT_MAX];
// maxa.cpp:7: error: size of array ‘arr’ is too large
char arr[INT_MAX];
maxa.cpp:4: error: total size of local objects too large
W VS jedna alokacja musi być mniejszą bądź równa 0x7FFFFFFF bajtów(~2GB), w przeciwnym wypadku kompilator wywali błąd(jeśli wpiszemy rozmiar na stałe), ew. poleci bad_alloc.
Mimo wszystko nie udało mi się zaalokować pamięci w jednym kawałku o takim rozmiarze, zawsze rzuca bad_alloc.