Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
std::string
|
|||
|---|---|---|---|
|
#18+
Добрый день уважаемые программисты. Если не сложно поделитесь экспертизой о том как устроен std::string. Правильно ли я понимаю, что по умолчанию там существует некий Allocator (зашитый в шаблоне) который определяет где будет аллоцироваться память под строку (в хипе или на стеке). Но есть еще некий Small String Optimizator который аллоцирует на стеке если строка маленькая. Буду благодарен за подробное объяснение как вся эта кухня работает. P.S.: Если нет желания мне что то объяснять и захочется отправить меня читать документацию - прошу не сердиться и просто проигнорировать тему. Заранее огромное спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 13:18 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
Семен.Семенович, Если убрать несущественные детали: Код: plaintext 1. 2. 3. 4. 5. 6. Если строка меньше N то она размещается прямо внутри объекта в массиве short_data[], и data указывает на short_data, а если больше, то буфер создается в куче с помощью new char[len], и data указывает на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 14:01 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
В basic_string.h: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Соответственно при попытке присвоить короткую строку происходит что-то вроде Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 14:14 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
Семен.СеменовичДобрый день уважаемые программисты. Если не сложно поделитесь экспертизой о том как устроен std::string. Правильно ли я понимаю, что по умолчанию там существует некий Allocator (зашитый в шаблоне) который определяет где будет аллоцироваться память под строку (в хипе или на стеке). Но есть еще некий Small String Optimizator который аллоцирует на стеке если строка маленькая. Буду благодарен за подробное объяснение как вся эта кухня работает. P.S.: Если нет желания мне что то объяснять и захочется отправить меня читать документацию - прошу не сердиться и просто проигнорировать тему. Заранее огромное спасибо. нельзя для string аллоцировать память на стеке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 07:37 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
MasterZiv, А эксперты выше пишут иное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 09:09 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
Семен.СеменовичMasterZiv, А эксперты выше пишут иное Они пишут что символы строки могут быть расположены внутри объекта строки. А объект может быть при этом и на куче и на стэке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 17:46 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
Что будем делать с c_str() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 18:39 |
|
||
|
std::string
|
|||
|---|---|---|---|
|
#18+
alex_kОни пишут что символы строки могут быть расположены внутри объекта строки. А объект может быть при этом и на куче и на стэке. На самом деле аллокатор размещающий именно на стеке тоже возможен. Просто надо понимать последствия )) maytonЧто будем делать с c_str() ? С ней все ок, ничего не надо делать )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 20:23 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39578350&tid=2018008]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 196ms |

| 0 / 0 |
