Я довольно новичок в программировании на C ++ и хочу по-настоящему понять, что я делаю, прежде чем продолжить обучение.
У меня есть следующий код
int main()
{
std::string myWord = "something";
std::cout << "'myWord' address => " << &myWord << std::endl;
std::cout << "myWord's capacity => " << myWord.capacity() << std::endl;
return 0;
}
, который дает мне
'myWord' address => 004FF930
myWord's capacity => 15
Когда я смотрю на вкладку памяти Visual Studio, я получил это:
![enter image description here](https://i.stack.imgur.com/r4HDP.jpg)
Итак, во-первых, почему содержание 004FF930
не равно " s " (тогда -> o, m, e, t , h, i, n, g, \ 0)?
Я предполагаю, что первый выделенный размер для моей строки имеет длину 15 байт (значение, возвращаемое capaticy()
). Если я прав, я не понимаю, почему число байтов от 004FF930
до \ 0 char составляет всего 14, а не 15?
Теперь, если я увеличу myWord длина более 15, как это:
int main()
{
std::string myWord = "something longer";
std::cout << "'myWord' address => " << &myWord << std::endl;
std::cout << "myWord's capacity => " << myWord.capacity() << std::endl;
}
Теперь это дает мне
'myWord' address => 00B5F6DC
myWord's capacity => 31
Я снова смотрю на вкладке памяти
![enter image description here](https://i.stack.imgur.com/IfuPo.jpg)
На данный момент у меня нет никаких предположений, потому что я просто не понимаю ... Где моя строка ???