Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1

Как получить размер динамического массива?

29.04.2021, 18:06. Показов 3563. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, у меня вопрос:
Можно ли взять размер массива, который выделен динамически. Например,
C++
1
2
int* p = new int[10];
cout << sizeof(p) / sizeof(int); // Нужно 10, но не правильно ! (1 для х86 или 2 для х64)
Как делать ? Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2021, 18:06
Ответы с готовыми решениями:

Как изменить размер динамического массива структур после того как был добавлен товар
Подскажите как мне изменить размер динамической массива структур после того как был добавлен товар , countProduct-это и есть размер массива...

Задать размер динамического массива через переменную, обявленную как extern
Привет народ, скажите, почему не компилирует: #include&quot;stdafx.h&quot; #include&quot;iostream&quot; using namespace std; extern const int y; int...

Размер динамического массива
Здравствуйте. Есть такой код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;ctime&gt; using namespace std; ...

25
Злостный нарушитель
 Аватар для Verevkin
10651 / 5800 / 1281
Регистрация: 12.03.2015
Сообщений: 26,781
29.04.2021, 18:19
Нельзя.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.04.2021, 18:22
Volga_, НЕТ! sizeof(p) даст размер указателя.
А если подумать, то и зачем? Вы же всегда должны его знать сами. Сами же память выделяете...
ЗЫ. Есть всякие хакерские способы. Но они основаны на предположениях о том, как мог бы работать компилятор. А эти предположения не обязательно выполняются....

Добавлено через 1 минуту

Не по теме:

Вот и Verevkin, не велит. А с ним лучше не ссорится. :D

3
Злостный нарушитель
 Аватар для Verevkin
10651 / 5800 / 1281
Регистрация: 12.03.2015
Сообщений: 26,781
29.04.2021, 18:30
Цитата Сообщение от Байт Посмотреть сообщение
Вот и Verevkin, не велит. А с ним лучше не ссорится.
Ну, ваще-то, я не спец (у меня 3 класса образования), но таки да.
Когда ты клянчишь у менеджера памяти кусок пространства таким способом, ты должен знать его размер всегда. Для других случаев написаны классы-вектора, мэпы, кортежи и прочая сиплюсплюсовая хренотень. Вот они сами рулят распределением памяти под данные, которые хранят.
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
29.04.2021, 18:32  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
sizeof(p) даст размер указателя.
Да, я понял, что sizeof(p) именно sizeof(int*), и результат sizeof(p)/sizeof(int) будет 1 для х86 и 2 для х64. Хорошо, правильно !
Цитата Сообщение от Байт Посмотреть сообщение
то и зачем?
У меня есть много данных в виде массива с инициализацией (не знать размер), объявленного как локальные переменные. Конечно не хватает память в стеке для них. Поэтому не смог работать с вектором или массивом. И я должен работать с кучей. Вот:
Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
    double* D_t_1 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400 };
    double* Ytb_t_1 = new double[] { 1, 5, 12, 22, 35, 51, 70, 94, 122, 155, 195, 240, 297, 361, 453, 650, 782 };
    double* dXw_t_1 = new double[] { 0, 1, 1, 2, 3, 5, 6, 8, 10, 12, 15, 18, 22, 25, 30, 37, 43 };
    double* dXtkk_t_1 = new double[] { 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 16 };
    double* dXtlp_t_1 = new double[] { 4, 9, 13, 17, 21, 25, 29, 33, 37, 40, 44, 47, 51, 54, 58, 61, 65 };
    double* dXv0_t_1 = new double[] { 4, 8, 12, 15, 19, 23, 26, 30, 33, 37, 40, 43, 46, 50, 53, 56, 59 };
    double* dXq_t_1 = new double[] { 3, 6, 8, 11, 13, 15, 18, 20, 22, 24, 26, 27, 29, 31, 32, 34, 35 };
    double* dXap_t_1 = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, 3, 4, 4, 5, 6 };
 
    double* D_t_2 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 3900 };
    double* Ytb_t_2 = new double[] { 1, 4, 10, 18, 29, 43, 59, 78, 101, 123, 158, 193, 233, 281, 335, 400, 481, 593, 838, 832 };
    double* dXw_t_2 = new double[] { 0, 1, 1, 2, 3, 5, 6, 7, 9, 11, 14, 16, 19, 22, 26, 30, 34, 39, 48, 49 };
    double* dXtkk_t_2 = new double[] { 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 19, 20 };
    double* dXtlp_t_2 = new double[] { 4, 9, 13, 17, 21, 25, 29, 33, 37, 40, 44, 48, 51, 55, 58, 61, 65, 68, 71, 73 };
    double* dXv0_t_2 = new double[] { 4, 8, 12, 15, 19, 23, 26, 30, 33, 37, 40, 43, 46, 50, 53, 56, 59, 62, 65, 66 };
    double* dXq_t_2 = new double[] { 3, 6, 8, 11, 13, 15, 18, 20, 22, 24, 26, 28, 29, 31, 33, 34, 36, 37, 38, 38 };
    double* dXap_t_2 = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7 };
 
    double* D_t_3 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 4200, 4400, 4600 };
    double* Ytb_t_3 = new double[] { 1, 4, 8, 15, 24, 35, 48, 64, 82, 103, 127, 154, 184, 219, 258, 302, 352, 409, 476, 553, 650, 774, 959 };
    double* dXw_t_3 = new double[] { 0, 1, 1, 2, 3, 4, 5, 7, 8, 10, 12, 14, 17, 19, 22, 25, 28, 32, 36, 41, 46, 52, 59 };
    double* dXtkk_t_3 = new double[] { 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 19, 21, 23, 25, 26 };
    double* dXtlp_t_3 = new double[] { 4, 9, 13, 17, 21, 25, 29, 33, 36, 40, 44, 48, 51, 55, 58, 62, 65, 68, 72, 75, 78, 81, 84 };
    double* dXv0_t_3 = new double[] { 4, 8, 12, 15, 19, 23, 26, 30, 33, 3, 40, 43, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77 };
    double* dXq_t_3 = new double[] { 3, 6, 8, 11, 13, 15, 18, 20, 22, 24, 26, 28, 30, 31, 33, 35, 36, 37, 39, 40, 41, 42, 43 };
    double* dXap_t_3 = new double[] { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9 };
 
    double* D_t_4 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 4200, 4400, 4600, 4800, 5000, 5200, 5400, 5600, 5700 };
    double* Ytb_t_4 = new double[] { 1, 3, 7, 12, 19, 27, 28, 50, 64, 80, 98, 119, 141, 167, 195, 226, 260, 299, 341, 387, 440, 497, 565, 640, 722, 835, 996, 1256, 1289 };
    double* dXw_t_4 = new double[] { 0, 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 14, 17, 19, 22, 25, 28, 31, 34, 38, 42, 46, 50, 55, 61, 68, 78, 80 };
    double* dXtkk_t_4 = new double[] { 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 38 };
    double* dXtlp_t_4 = new double[] { 4, 9, 13, 17, 21, 25, 29, 33, 36, 40, 44, 48, 51, 55, 58, 62, 65, 68, 72, 75, 78, 81, 84, 87, 90, 94, 97, 100, 101 };
    double* dXv0_t_4 = new double[] { 4, 8, 12, 15, 19, 23, 26, 30, 33, 37, 40, 43, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 79, 82, 85, 88, 91, 92 };
    double* dXq_t_4 = new double[] { 3, 6, 8, 11, 13, 15, 18, 20, 22, 24, 26, 29, 30, 32, 33, 35, 36, 38, 39, 40, 42, 43, 44, 45, 46, 47, 47, 48, 48 };
    double* dXap_t_4 = new double[] { 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 12, 13, 14 };
 
    double* D_t_5 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 4200, 4400, 4600, 4800, 5000, 5200, 5400, 5600, 5800, 6000, 6200, 6400, 6600, 6800, 7000, 7200, 7300 };
    double* Ytb_t_5 = new double[] { 1, 2, 5, 9, 14, 21, 28, 39, 48, 60, 74, 89, 105, 124, 144, 166, 190, 216, 245, 257, 309, 345, 384, 426, 472, 522, 578, 638, 702, 776, 859, 946, 1057, 1176, 1337, 1578, 1783 };
    double* dXw_t_5 = new double[] { 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 19, 22, 26, 29, 32, 35, 38, 41, 45, 48, 52, 55, 59, 63, 67, 71, 75, 80, 85, 90, 95, 100, 106, 113, 122, 123 };
    double* dXtkk_t_5 = new double[] { 0, 1, 1, 2, 4, 5, 6, 8, 9, 11, 13, 15, 17, 20, 22, 24, 26, 29, 31, 33, 36, 38, 40, 43, 45, 47, 49, 52, 54, 57, 59, 61, 63, 65, 68, 69, 69 };
    double* dXtlp_t_5 = new double[] { 4, 8, 12, 16, 20, 23, 27, 30, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 115, 117 };
    double* dXv0_t_5 = new double[] { 4, 8, 11, 15, 18, 21, 24, 27, 31, 34, 37, 39, 42, 45, 47, 50, 53, 55, 58, 61, 63, 66, 69, 71, 74, 77, 79, 82, 85, 87, 90, 93, 95, 98, 101, 104, 106 };
    double* dXq_t_5 = new double[] { 3, 5, 8, 10, 12, 14, 16, 18, 20, 22, 24, 25, 26, 27, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 44, 45, 46, 47, 47, 48, 48, 49 };
    double* dXap_t_5 = new double[] { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 };
 
    double* D_t_6 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 4200, 4400, 4600, 4800, 5000, 5200, 5400, 5600, 5800, 6000, 6200, 6400, 6600, 6800, 7000, 7200, 7400, 7600, 7800, 8000, 8200, 8400, 8600, 8800, 9000 };
    double* Ytb_t_6 = new double[] { 0, 2, 4, 7, 11, 15, 22, 29, 37, 46, 57, 69, 82, 97, 113, 130, 149, 169, 191, 215, 246, 267, 297, 328, 361, 397, 435, 475, 518, 564, 612, 664, 720, 780, 844, 946, 989, 1070, 1161, 1259, 1372, 1500, 1656, 1843, 1961 };
    double* dXw_t_6 = new double[] { 0, 1, 3, 5, 8, 12, 16, 20, 25, 30, 36, 41, 47, 52, 57, 63, 70, 76, 83, 89, 96, 102, 109, 115, 122, 129, 136, 142, 149, 156, 163, 170, 176, 183, 189, 196, 202, 209, 216, 223, 230, 238, 247, 268, 269 };
    double* dXtkk_t_6 = new double[] { 0, 1, 3, 5, 8, 12, 15, 20, 24, 29, 35, 40, 45, 50, 54, 60, 65, 71, 76, 82, 87, 92, 97, 103, 108, 113, 118, 123, 128, 133, 137, 142, 146, 150, 153, 156, 160, 163, 166, 169, 172, 174, 178, 181, 182 };
    double* dXtlp_t_6 = new double[] { 4, 8, 11, 14, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31, 33, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 48, 49, 51, 53, 55, 57, 59, 61, 64, 66, 68, 71, 74, 76, 78, 82 };
    double* dXv0_t_6 = new double[] { 4, 7, 0, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 46, 48, 50, 51, 54, 56, 58, 60, 62, 65, 67, 69, 71, 75 };
    double* dXq_t_6 = new double[] { 3, 5, 7, 8, 9, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7 };
    double* dXap_t_6 = new double[] { 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11, 12, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35 };
 
    double* D_t_7 = new double[] { 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 4200, 4400, 4600, 4800, 5000, 5200, 5400, 5600, 5800, 6000, 6200, 6400, 6600, 6800, 7000, 7200, 7400, 7600, 7800, 8000, 8200, 8400, 8600, 8800, 9000, 9200, 9400, 9600, 9800, 10000, 10200, 10400, 10600, 10800, 11000, 11024 };
    double* Ytb_t_7 = new double[] { 0, 1, 2, 4, 7, 10, 14, 18, 24, 30, 38, 46, 56, 66, 78, 92, 106, 112, 139, 158, 178, 200, 224, 249, 275, 303, 333, 365, 399, 435, 473, 513, 555, 599, 646, 696, 749, 804, 862, 924, 990, 1060, 1133, 1211, 1296, 1385, 1482, 1591, 1699, 1867, 2014, 2141, 1348, 2558, 2959, 3323 };
    double* dXw_t_7 = new double[] { 0, 1, 1, 2, 3, 4, 6, 8, 10, 13, 16, 19, 22, 26, 30, 35, 40, 45, 51, 57, 63, 69, 75, 81, 87, 95, 103, 110, 117, 123, 130, 137, 144, 151, 159, 166, 174, 181, 189, 196, 204, 212, 220, 228, 236, 245, 255, 264, 274, 290, 300, 304, 308, 31, 339, 353 };
    double* dXtkk_t_7 = new double[] { 0, 1, 1, 2, 4, 5, 7, 9, 11, 14, 17, 20, 24, 27, 32, 36, 41, 47, 52, 58, 64, 70, 75, 80, 86, 93, 101, 108, 114, 119, 124, 129, 135, 141, 146, 152, 157, 163, 163, 173, 177, 182, 187, 192, 197, 202, 208, 213, 218, 228, 232, 230, 224, 223, 229, 228 };
    double* dXtlp_t_7 = new double[] { 4, 8, 12, 16, 20, 23, 26, 30, 32, 35, 38, 40, 42, 44, 46, 47, 49, 50, 50, 51, 52, 52, 53, 55, 55, 55, 55, 55, 55, 56, 58, 59, 50, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 77, 77, 79, 83, 91, 96, 97, 97 };
    double* dXv0_t_7 = new double[] { 4, 8, 11, 15, 18, 21, 24, 27, 29, 32, 34, 36, 38, 40, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 50, 50, 5, 50, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 75, 83, 87, 88, 88 };
    double* dXq_t_7 = new double[] { 2, 4, 6, 7, 9, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 11, 11, 9, 9, 8, 8, 8, 7, 6, 5, 5, 4, 3, 2, 1, 1, -1, -2, -3, -4, -5, -7, -8, -9, -10, -12, -13, -15, -16, -18, -20, -23, -23 };
    double* dXap_t_7 = new double[] { 0, 0, 0, 0, 0, 2, 3, 3, 4, 5, 6, 7, 9, 10, 11, 11, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 37, 38, 39, 41, 42, 43, 44, 46, 46, 47, 50, 54, 57, 59, 59 };
 
    double* D_c_1 = new double[] { 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400, 3415 };
    double* Ytb_c_1 = new double[] { 1688, 1642, 1598, 1553, 1504, 1448, 1380, 1296, 1184, 961, 842 };
    double* dXw_c_1 = new double[] { 42, 44, 46, 48, 50, 51, 51, 51, 50, 47, 45 };
    double* dXtkk_c_1 = new double[] { 11, 8, 8, 8, 10, 11, 12, 13, 15, 16, 16 };
    double* dXtlp_c_1 = new double[] { 28, 34, 39, 43, 47, 50, 54, 58, 61, 65, 65 };
    double* dXv0_c_1 = new double[] { 26, 31, 36, 39, 42, 45, 49, 52, 56, 59, 59 };
    double* dXq_c_1 = new double[] { 14, 17, 12, 22, 24, 26, 28, 30, 32, 35, 35 };
    double* dXap_c_1 = new double[] { 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6 };
 
    double* D_c_2 = new double[] { 2900, 3000, 3200, 3400, 3600, 3800, 3958 };
    double* Ytb_c_2 = new double[] { 1720, 1692, 1627, 1547, 1445, 1300, 983 };
    double* dXw_c_2 = new double[] { 59, 60, 60, 61, 61, 60, 54 };
    double* dXtkk_c_2 = new double[] { 13, 14, 15, 16, 18, 19, 21 };
    double* dXtlp_c_2 = new double[] { 55, 57, 61, 64, 68, 71, 74 };
    double* dXv0_c_2 = new double[] { 50, 52, 55, 58, 62, 65, 67 };
    double* dXq_c_2 = new double[] { 28, 29, 31, 33, 35, 37, 39 };
    double* dXap_c_2 = new double[] { 6, 7, 7, 7, 8, 8, 8 };
 
    double* D_c_3 = new double[] { 3000, 3400, 3600, 3800, 4000, 4200, 4400, 4600, 4689 };
    double* Ytb_c_3 = new double[] { 2113, 2063, 2006, 1839, 1859, 1762, 1639, 1451, 1176 };
    double* dXw_c_3 = new double[] { 71, 72, 73, 74, 74, 75, 74, 72, 66 };
    double* dXtkk_c_3 = new double[] { 16, 17, 18, 20, 21, 23, 24, 26, 27 };
    double* dXtlp_c_3 = new double[] { 61, 64, 68, 71, 74, 78, 81, 85, 86 };
    double* dXv0_c_3 = new double[] { 55, 58, 61, 65, 68, 71, 74, 77, 78 };
    double* dXq_c_3 = new double[] { 29, 31, 33, 34, 36, 38, 40, 72, 43 };
    double* dXap_c_3 = new double[] { 8, 8, 9, 9, 10, 10, 10, 10, 10 };
 
    double* D_c_4 = new double[] { 4300, 4400, 4600, 4800, 5000, 5200, 5400, 5600, 5744 };
    double* Ytb_c_4 = new double[] { 2524, 2493, 2426, 2349, 2259, 2154, 2023, 1835, 1458 };
    double* dXw_c_4 = new double[] { 91, 92, 93, 94, 95, 95, 95, 93, 85 };
    double* dXtkk_c_4 = new double[] { 24, 25, 27, 29, 30, 32, 34, 37, 38 };
    double* dXtlp_c_4 = new double[] { 79, 81, 84, 87, 91, 94, 97, 100, 102 };
    double* dXv0_c_4 = new double[] { 72, 74, 77, 80, 82, 85, 88, 91, 93 };
    double* dXq_c_4 = new double[] { 36, 37, 39, 40, 42, 43, 45, 46, 48 };
    double* dXap_c_4 = new double[] { 12, 12, 12, 13, 13, 14, 14, 15, 14 };
 
    double* D_c_5 = new double[] { 5400, 5600, 5800, 6000, 6200, 6200, 6400, 6600, 6800, 7000, 7314 };
    double* Ytb_c_5 = new double[] { 3257, 3198, 3133, 3059, 2270, 2976, 2882, 2775, 2654, 2497, 1882 };
    double* dXw_c_5 = new double[] { 129, 131, 133, 134, 137, 136, 137, 138, 138, 138, 130 };
    double* dXtkk_c_5 = new double[] { 43, 45, 47, 49, 66, 52, 54, 57, 59, 62, 69 };
    double* dXtlp_c_5 = new double[] { 92, 95, 98, 101, 117, 104, 106, 109, 112, 115, 117 };
    double* dXv0_c_5 = new double[] { 83, 86, 89, 90, 106, 91, 97, 99, 102, 104, 107 };
    double* dXq_c_5 = new double[] { 38, 39, 40, 41, 48, 42, 44, 45, 46, 47, 49 };
    double* dXap_c_5 = new double[] { 17, 17, 18, 18, 21, 19, 20, 20, 21, 21, 21 };
 
    double* D_c_6 = new double[] { 6800, 7000, 7200, 7400, 7600, 7800, 8000, 8200, 8400, 8600, 8800, 9000, 9093 };
    double* Ytb_c_6 = new double[] { 4143, 4083, 4017, 3964, 3868, 3782, 3686, 3580, 3457, 3314, 3132, 2855, 2498 };
    double* dXw_c_6 = new double[] { 221, 230, 238, 246, 252, 257, 259, 258, 258, 260, 260, 261, 268 };
    double* dXtkk_c_6 = new double[] { 94, 103, 112, 121, 128, 133, 136, 136, 138, 142, 147, 154, 170 };
    double* dXtlp_c_6 = new double[] { 90, 88, 87, 86, 86, 87, 89, 94, 97, 99, 100, 100, 92 };
    double* dXv0_c_6 = new double[] { 82, 80, 79, 78, 78, 79, 81, 85, 88, 90, 91, 91, 84 };
    double* dXq_c_6 = new double[] { 19, 17, 16, 15, 14, 14, 14, 15, 16, 16, 16, 15, 11 };
    double* dXap_c_6 = new double[] { 30, 30, 30, 31, 31, 32, 33, 34, 35, 36, 37, 37, 36 };
 
    double* D_c_7 = new double[] { 8400, 8600, 8800, 9000, 9200, 9400, 9600, 9800, 10000, 10200, 10400, 10600, 10800, 11000, 11024 };
    double* Ytb_c_7 = new double[] { 5231, 5174, 5109, 5037, 4985, 4871, 4775, 4671, 4558, 4436, 4282, 4075, 3821, 3470, 3323 };
    double* dXw_c_7 = new double[] { 337, 335, 334, 332, 332, 333, 335, 340, 347, 356, 352, 358, 348, 351, 353 };
    double* dXtkk_c_7 = new double[] { 153, 151, 149, 148, 148, 150, 155, 163, 195, 191, 204, 205, 201, 220, 228 };
    double* dXtlp_c_7 = new double[] { 98, 93, 99, 104, 108, 111, 113, 112, 109, 103, 99, 103, 110, 102, 97 };
    double* dXv0_c_7 = new double[] { 80, 85, 90, 94, 98, 101, 102, 102, 99, 94, 90, 93, 100, 93, 88 };
    double* dXq_c_7 = new double[] { -22, -23, -24, -25, -25, -25, -26, -26, -26, -26, -26, -26, -26, -26, -25 };
    double* dXap_c_7 = new double[] { 51, 53, 55, 57, 59, 61, 62, 62, 61, 59, 59, 60, 63, 61, 59 };

Теперь я хочу взять размер каждого массива ! Можно ли дать несколько советов для моей проблемы ? Спасибо.
0
Злостный нарушитель
 Аватар для Verevkin
10651 / 5800 / 1281
Регистрация: 12.03.2015
Сообщений: 26,781
29.04.2021, 18:43
Лучший ответ Сообщение было отмечено Volga_ как решение

Решение

Цитата Сообщение от Volga_ Посмотреть сообщение
Теперь я хочу взять размер каждого массива ! Можно ли дать несколько советов для моей проблемы ?
Ты изменяешь данные в этих массивах после инициализации?

Добавлено через 4 минуты
Так не зайдёт ли, а?
C++
1
static const double dXq_t_4[] = { 3, 6, 8, 11, 13, 15, 18, 20, 22, 24, 26, 29, 30, 32, 33, 35, 36, 38, 39, 40, 42, 43, 44, 45, 46, 47, 47, 48, 48 };
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.04.2021, 18:47
Замени на std::vector.
1
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
29.04.2021, 18:59
Volga_, как вариант (нашел в загашниках вот такую конструкцию):
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename... Args>
constexpr auto make_array(Args&&... args) noexcept
{
    using common_type = std::common_type_t<Args...>;
    return new std::array<common_type, sizeof...(Args)>{static_cast<common_type>(std::forward<Args>(args))...};
}
 
int main()
{
    auto *D_t_1 = make_array(200., 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3000, 3200, 3400);
    std::cout << D_t_1->size();
}
Обязательно у первого значения поставить точку. Иначе будет массив целых.
1
Злостный нарушитель
 Аватар для Verevkin
10651 / 5800 / 1281
Регистрация: 12.03.2015
Сообщений: 26,781
29.04.2021, 19:07
Цитата Сообщение от liv Посмотреть сообщение
Обязательно у первого значения поставить точку. Иначе будет массив целых.
мож просто не пихать auto туда, куда не надо, и скромно задать тип явно как double?
1
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
29.04.2021, 19:09
Verevkin, может... Я подал идею, развивайте...
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
29.04.2021, 19:18  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Ты изменяешь данные в этих массивах после инициализации?
Не изменял их. Ты правда. Я вдруг забыл статический массив ! Ок. Спасибо.

Цитата Сообщение от nmcf Посмотреть сообщение
Замени на std::vector.
Трудность у меня именно объем памяти на стеке, поэтому не смог std::vector.


liv, спасибо. Учу ваш вариант. Может быть много интересных здесь.

Спасибо всем. Очень помогли.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.04.2021, 19:20
std::vector держит элементы в динамической памяти, а сам много не занимает.
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
29.04.2021, 19:31  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
std::vector держит элементы в динамической памяти,
Я работаю много раз с вектором, но он находится в стеке !
Посмотри:

Не хватает памяти в стеке для держания элементов в случае моей задачи !
0
Злостный нарушитель
 Аватар для Verevkin
10651 / 5800 / 1281
Регистрация: 12.03.2015
Сообщений: 26,781
29.04.2021, 19:40
Цитата Сообщение от Volga_ Посмотреть сообщение
Не хватает памяти в стеке для держания элементов в случае моей задачи !
Да всё, всё, узбагойзя ты! static const годится - и хорошо. Размер теперь по идентификатору считается на этапе компиляции и не надо париться по этому поводу.
Макрос вот такой возьми себе:
C++
1
#define SIZEOF_STATIC_ARRAY(st_arr) (sizeof(st_arr) / sizeof(st_arr[0]))
Название: 300px-Calm_down.jpg
Просмотров: 148

Размер: 24.0 Кб
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
29.04.2021, 19:46  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Макрос вот такой возьми себе:
Да. Он реализован в моей работе. Спасибо еще раз. Все очень хорошо.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.04.2021, 19:59
Лучший ответ Сообщение было отмечено Volga_ как решение

Решение

Цитата Сообщение от Volga_ Посмотреть сообщение
он находится в стеке !
А элементы нет. И ты можешь не объявлять в стеке. Используй глобальные.
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
29.04.2021, 20:02  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Используй глобальные.
Да. Именно вот. И статический массив - выбор мой. Спасибо. Все ясно.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.04.2021, 20:17
Лучший ответ Сообщение было отмечено Volga_ как решение

Решение

Цитата Сообщение от nmcf Посмотреть сообщение
Используй глобальные.
Хороший совет!
Цитата Сообщение от Volga_ Посмотреть сообщение
Теперь я хочу взять размер каждого массива ! Можно ли дать несколько советов для моей проблемы ? Спасибо.
Я пришел, а тут уже столько слов написано.... Ты разобрался? Если нет - спрашивай дальше!
Но глядя на твой код в посте 5 - боясь тат проблема не в стеке, а в статической памяти.(static). ведь эти твои данные инициализации надо тоже где-то держать.
Я в таких случаях завожу файлы, храню в этих файлах, и при инициализации просто читаю все из файла.
Тут твоя задача - правильно этот файл (файлы) организовать, чтобы ТЕБЕ было удобно работать.
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.04.2021, 20:33
Цитата Сообщение от Байт Посмотреть сообщение
Хороший совет!
Вполне.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
29.04.2021, 20:43
Цитата Сообщение от nmcf Посмотреть сообщение
Вполне.
Если без шуток, то более идиотский совет дать трудно!
Это я не вам, спорить тут бессмысленно. Просто чтобы другие участники обсуждения знали мое мнение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2021, 20:43
Помогаю со студенческими работами здесь

Размер динамического массива
Здравствуйте, есть ли какая функция, которая возвращает размер динамического массива (желательно для 2-х мерного)? если мне, к примеру, в...

Размер динамического массива
Как узнать сколько заполненных елементов в динамическом массиве, если под него выделено 400 элементов.Т.е. узнать сколько элементов из них...

Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости
Ребята, подскажите, кто может, каким образом создать функцию с применением динамического массива, но так, чтобы размер массива увеличивался...

Задавать размер динамического массива
Программа работает но в этой программе размерность двумерного массива определена константой, а нужно чтобы она вводилась с клавиатуры во...

Изменить размер динамического массива
Дан класс, который описывает двумерный массив class matr{ private: int **matrix; int rows, columns; Создается объект myMatrix,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru