Форум программистов, компьютерный форум CyberForum.ru

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
Undisputed
132 / 63 / 13
Регистрация: 10.06.2014
Сообщений: 1,105
Завершенные тесты: 3
#1

Почему не заканчивается стек? - C++ Linux

07.12.2016, 19:16. Просмотров 388. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//g++  4.9.3
 
#include <iostream>
 
#include <sys/resource.h>
 
class Cls{
    int n;
    int c;
    int b;
    int e;
    int z;
    int fo;
    int n1;
    int n2;
    int n3;
    short l1;
    short l2;
 
};
 
int main (int argc, char **argv)
{
    struct rlimit rl;
    
    int stack_limit = getrlimit(RLIMIT_STACK, &rl);
    int max_cls_count = (rl.rlim_cur / sizeof(Cls));
    
    std::cout << "Stack size is: " << rl.rlim_cur << std::endl;
    std::cout << "Cls size is " << sizeof(Cls) << std::endl;
    std::cout << "Maximum Cls objects count in stack:" << max_cls_count << std::endl;
 
    for (int i =0; i <= max_cls_count; i++){
        Cls c = Cls();
    }
    std::cout << std::endl << "No error";
 
    return 0;
}
http://rextester.com/VKPD81612

Как видно в коде на основе размера стека и объекта который в нем создается вычисляется максимальное количество объектов которые могут находится в стеке. Однако создать количество объектов, суммарный размер которых превышает размер стека все же удается и ошибок не возникает. Чего я не понимаю?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2016, 19:16     Почему не заканчивается стек?
Посмотрите здесь:

стек - C++ Linux
в стеке после идущих подряд двух отрицательных элементов вставить 0,используя только команды вынуть посмотреть и положить. принцип...

Цикл почему-то не заканчивается. - C++
Значит идея такая пока не сгенерируется число =2 цикл будет повторяться. Но когда число =2 цикл все равно не заканчивается. Подскажите...

Почему не заканчивается цикл? - Delphi
ребята что-то сделал не так помогите понять что именно procedure TForm1.Button1Click(Sender: TObject); var k,n,j,i:byte; ...

Почему не заканчивается цикл? - C (СИ)
При вводе нужного предложения и символа ставлю чтобы i=49, так как считаю, что при следующем заходе работа цикла прекратится. Пробовал...

Почему программа заканчивается? - C++
Напишите программу, в которой функция fprintf() используется для создания файла инвентарной описи, содержащей сведения о наименовании...

Почему цикл не заканчивается??? - C++
Всем добрый день! У меня здесь вопрос по циклу while. Вот программа по подсчёту букв и сочетаний в тексте: #include &lt;iostream&gt; ...

не понимаю почему цикл не заканчивается - C++
Привет! Вот написал. Объясните, пожалуйста, почему цикл не заканчивается? Функция должна считывать инфу и записывать в массив! Идеи по...

Почему notify не заканчивается без synchronized? - Java SE
Здравствуйте. Дан код public class exer21 { public static void main(String args) throws InterruptedException { ...

Почему распечатка не заканчивается одной строкой? - C++
#include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int main(int nNumberofArgs, char* pszArgs) { ...

Почему переполняется стек - Prolog
Написал программу, но не пойму почему переполняется стек. Суть программы - возведение в степень ч/з сложения. predicates ...

Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном» - Free Pascal
Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном».

Стек и очередь. Задачи никогда не попадают в стек - Delphi
Условие: Система состоит из двух процессоров P1 и P2 и двух очередей F1, F2 и стека S. В систему могут поступать запросы на выполнение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.12.2016, 19:22     Почему не заканчивается стек? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Например:
C++
1
2
3
    for (int i =0; i <= max_cls_count; i++){
        Cls c = Cls();//<--создался
    }//<--уничтожился
Undisputed
132 / 63 / 13
Регистрация: 10.06.2014
Сообщений: 1,105
Завершенные тесты: 3
07.12.2016, 19:23  [ТС]     Почему не заканчивается стек? #3
Croessmah,
Понял, спасибо!
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
07.12.2016, 19:24     Почему не заканчивается стек? #4
Так упало:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
#include <sys/resource.h>
 
class Cls{
    int n;
    int c;
    int b;
    int e;
    int z;
    int fo;
    int n1;
    int n2;
    int n3;
    short l1;
    short l2;
 
};
 
int main (int argc, char **argv)
{
    struct rlimit rl;
    
    int stack_limit = getrlimit(RLIMIT_STACK, &rl);
    int max_cls_count = (rl.rlim_cur / sizeof(Cls));
    
    std::cout << "Stack size is: " << rl.rlim_cur << std::endl;
    std::cout << "Cls size is " << sizeof(Cls) << std::endl;
    std::cout << "Maximum Cls objects count in stack:" << max_cls_count << std::endl;
 
    Cls c[3000000] = {};
    std::cout << std::endl << "No error";
 
    return 0;
}
http://rextester.com/BECLVQ81778

Но всё это достаточно условно.
Undisputed
132 / 63 / 13
Регистрация: 10.06.2014
Сообщений: 1,105
Завершенные тесты: 3
07.12.2016, 19:28  [ТС]     Почему не заканчивается стек? #5
Croessmah,
http://rextester.com/XFSZ34370

Прибавил +20 к максимальному количеству но все равно ошибок нет. Откуда берется дополнительное место?
Yandex
Объявления
07.12.2016, 19:28     Почему не заканчивается стек?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru