Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Счетчик в классе string - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс для работы со скалярным типом данных в стиле языка Перл http://www.cyberforum.ru/cpp-beginners/thread1200620.html
помогите пожалуйста создать класс для работы со скалярным типом данных в стиле языка Перл. Класс должен быть прозрачен сточки зрения число, строка. Т.е. работа методов класса не зависела бы от того,...
C++ Отсортировать по возрастанию элементы массива с четными номерами методом выбора (Pascal->C++) Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20, 20). Требуется: Отсортировать по возрастанию элементы массива с четными номерами методом выбора.... http://www.cyberforum.ru/cpp-beginners/thread1200617.html
C++ Распечатать фамилии детей данного детского сада, которые родились в определенном месяце (Pascal->C++)
Распечатать фамилии детей данного детского сада, которые родились в определенном месяце; указать их возраст и группу. uses crt; const N=3; //количество детей type FIO = record family :...
Выполнить циклический сдвиг элементов квадратной матрицы, используя локальные и динамические массивы C++
Осуществить циклический сдвиг элементов квадратной матрицы размерность M x N вправо на k элементов таким образом: элементы первой строки сдвигаются в последний столбец сверху вниз, из него - в...
C++ Определить, имеются ли в строке числа, состоящие из одной цифры (Pascal->C++) http://www.cyberforum.ru/cpp-beginners/thread1200614.html
Дана фраза, в которой слова разделены одним пробелом, а сама фраза заканчивается точкой. Требуется: Определить, имеются ли в ней числа, состоящие из одной цифры. uses crt; var s:string; ...
C++ Получить новую матрицу, в которой все отрицательные элементы заменить на -1, положительные на +1 (Pascal->C++) Двумерный целочисленный массив A(m,n) задается с экрана либо генерируется в пределах от -20 до 20. Требуется: Получить новую матрицу, в которой все отрицательные элементы заменить на -1,... подробнее

Показать сообщение отдельно
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72

Счетчик в классе string - C++

05.06.2014, 22:47. Просмотров 228. Ответов 4
Метки (Все метки)

имеется такой код
C++
1
2
3
4
5
6
...
string s = "Hello world";
string s1;
s1 = s;
s[0] = 'h';
...
В строчке где s1 = s по сути не происходит выделения новой памяти и s1 просто указывает на ту же область памяти, что и s.

Далее, в следующей строчки происходит модификация строки и, так как на одну и ту же область памяти указывают s и s1, то строчка сначала копируется в другую область памяти, а потом модифицируется. В итоге в s теперь строка "hello world", a в s1 - "Hello world".

Из всего этого следует, что имеется счетчик, который содержит в себе количество указателей на выделенную область памяти. Вопрос - а где этот счетчик хранится? Первое предположение, что этот счетчик находится рядом со словом в памяти оказалось ошибочным - смотрел в отладчике, никаких счетчиков в рядом с выделенной памятью нету. Второе предположение, что в классе basic_string есть статическая переменная для этих целей, тоже не увенчалось успехом.

Подскажите кто знает, как все таки это там реализовано? Знаю, что можно посмотреть исходники - смотрел, но не смог разобраться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru