Я новичок в области C++ и смущен о жизни std::string
, когда он вставлен в std::map
.Объем std :: string при наложении на карту
Например:
void loadMap(std::map<string, int> &myMap)
{
int num = rand();
myMap[to_string(num) + "_xyz"] = num;
}
void main(int argc, char** argv)
{
std::map<string, int> myMap;
loadMap(myMap);
//Is the entry I just added to the map in loadMap still safe in there?
//i.e., is the key, which is an std::string, still around?
//Or its lifetime's ended?
}
Я сделал некоторые испытания и КАЖЕТСЯ быть в порядке, но я не уверен, если это будет всегда так. Может быть, мне просто повезло, что память, в которой была std :: string, не была затронута.
Срок службы содержимого карты совпадает с временем жизни карты. – molbdnilo
@Treycos Я понимаю, что 'loadMap' модифицировал карту DIRECTLY, потому что я прошел по ссылке, НО что, если срок жизни строки закончился? – 0x56794E
Ответ выше – Treycos