LINUX.ORG.RU

[c++] Какой может быть максимальный размер статического массива из double'ов?

 


0

1

Всем добрый день! Вопрос - в названии темы. При наличии строчки вроде

double all_lengths[499500];
программа падает с ошибкой сегментирования. Как сие победить? Нужен именно массив, а не список (у него вроде не должно быть падений из-за размера).

★★

Последнее исправление: yura_ts (всего исправлений: 1)

выделять память в куче

thesame ★★★★
()

Сделай динамический массив:

double *all_lengths = new double[499500];
// использование
delete[] all_lengths;

gizzka ★★
()

Иии... мордой прямо о дно стека.

geekless ★★
()
Ответ на: комментарий от CrossFire

Не падает тогда. Сорри за нубовопрос)

yura_ts ★★
() автор топика
Ответ на: комментарий от gizzka

Это безобразие, а не код. Утечки памяти гарантированы.

anonymous
()

Да, давайте меряться стеком

jreznot
()

Так статический или где? Для автоматических переменных есть только относительно короткий стек, который, если очень уже хочется, можно растянуть, но лучше не надо. Для статических есть секция данных, которая формируется компоновщиком и может занимать хоть всё адресное пространство. В некоторых случаях нужны хитрые ключики типа -mcmodel=large.

const86 ★★★★★
()
Ответ на: комментарий от sergej

А чё это за параметр? Да и где вообще этот стек располагается? Я так понимаю что его резервирует программа когда запускается? Т.е выделяется память под программу и некоторое кол-во памяти под стек.

xterro ★★★★★
()
Ответ на: комментарий от sergej

но вообще хранить 4М в стеке - плохая идея

sergej ★★★★★
()
Ответ на: комментарий от Delirium_veritas

>Наводящий вопрос, чем main() отличается от my_func()?

По классам памяти вроде ничем,all_lengths[] должен быть автоматическим.

capricorn20
()
Ответ на: комментарий от xterro

> А чё это за параметр? Да и где вообще этот стек располагается?

стыдно такие вопросы задавать. Иди читай Таненбаума.Или книжки по ассемблеру

Harald ★★★★★
()

std::vector<double>, блеать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.