170 похожих чатов

Указатель на data std::vector становится не валидным после resize (0)

?

17 ответов

6 просмотров

Нет, но очевидно значения использовать нельзя

Ffff-Ffff Автор вопроса
Ffff Ffff
А куда он будет указывать?

The pointer is such that range [data(), data() + size()) is always a valid range, even if the container is empty (data() is not dereferenceable in that case).

다니엘(줄리아)
Туда же

Только объектов там уже не будет

Ffff Ffff
А куда он будет указывать?

Ресайз не удаляет память и не реаллоцирует если нужно меньше(тут надо 0)

Ffff-Ffff Автор вопроса
Kelbon
Ресайз не удаляет память и не реаллоцирует если ну...

Мы вызвали пустой конструктор, потом сделали resize(0) , а потом скопировали указатель на data в другой указатель

Ffff Ffff
Мы вызвали пустой конструктор, потом сделали resiz...

В этом случае скорее всего будет просто nullptr (не уверен насчёт msvc debug). При этом resize(0) просто уничтожит все объекты в векторе, не освобождая память, но data() скорее всего будет возвращать указатель на выделенную (но ещё не используемую) память.

Ffff-Ffff Автор вопроса

А сколько выделяется памяти при вызове пустого конструктора std::vector ?

Ivan Sokolov
нисколько. это специфицировано

Ну вот я не уверен насчёт msvc только, где то там в debug было что то такое. Но это старая история, может давно и не так.

Ivan Sokolov
нисколько. это специфицировано

Но с c++ 17 точно, там же noexcept появился.

Ivan Sokolov
нисколько. это специфицировано

к стандарту ещё надо выпускать собрание комментариев, где вся подобная дедукция уже проведена, … в 72 томах

Гражданин Котейко
к стандарту ещё надо выпускать собрание комментари...

натравливать на стандарт систему автоматических доказательств страшно - она может сказать, что the only winning move is not to play

Ivan Sokolov
натравливать на стандарт систему автоматических до...

зачем мучать автоматику, если можно запереть на несколько месяцев в помещении без окон подгруппу по рефлексии? они все равно рефлексией не занимаются

Ivan Sokolov
натравливать на стандарт систему автоматических до...

Уже спрашивали чатгпт чо она думает про стандарт?

Похожие вопросы

Обсуждают сегодня

Друзья, за кем?
Magic
12
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Или даже по-другому вопрос выстрою Есть ли вообще в electron'e для винды, возможность кнопки действий в нотификацию впихнуть ?
Андрей
7
приветы , подскажите что я не так сделал , почему у меня скрипт не работает в программе Revit ? ;Autohotkey_RU IfWinActive ("ahk_exe Revit.exe") ; только в открытом Revit Gu...
Anton Terentev
2
> комьюнити я бы не судил по этому чату. Как мы видели по статам просмотров нескольких телеговских постов, то в чате их набивается 30-40 или даже выше, когда как общаются акти...
Constantin F.
4
void bytes2hex(uint8_t* to, uint8_t* from, uint16_t l) { // len(from) == l; len(to) == l * 2 for (uint16_t i = 0; i < l; ++i) { *(to++) = hex[(from[i] >> 4) & ...
#
3
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Карта сайта