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

Как выделяется память под массив string? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтения файла в динамический массив http://www.cyberforum.ru/cpp-beginners/thread650065.html
Добрый день. Файл состоит из 6 столбцов и миллионов рядков. Нужно прочесть все это в динамический массив, проблема заключается в том что файл весит очень много(больше 3 гб). Как можно осуществить подобное?
C++ Скопировать двумерный массив в vector Добрый день всем. подскажите пожалуйста, как скопировать двумерный массив в vector? int i = {0}; vector<vector<int> > _v; _v = i; // Не работает. Есть идеи? весь день колупаюсь. и copy делаю и всё что угодно, в итоге одни ошибки компилятора. Помогите плиз. http://www.cyberforum.ru/cpp-beginners/thread650029.html
Защита const C++
const Int& operator= (const Int& a) Отчего защищает первый const
C++ Определить, попадает ли точка с заданными координатами в область
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную из рисунка серым цветом. Результат работы программы вывести в виде текстового со-общения. Параметр R вводится с клавиатуры
C++ Перписать из Си++ в ява http://www.cyberforum.ru/cpp-beginners/thread649907.html
Добрый день, помогите, пожайлуйста, переписать программу на ява. И, если не сложно, объясните в чем там ключевые различия. Заранее благодарен:) #include <iostream> #include <windows.h> using std::cout; using std::endl; using std::cin; inline char *rus( char *s ) // русский текст в консоли { char *t = new char; CharToOem(s,t);
C++ Найти обратную матрицу Здравствуйте, уважаемые программисты! Прощу помощи. Для заданной матрицы A(3,3), найти обратную А в -1 степени. Нужно ли самому в код вписывать свои значения матрицы? #include <iostream.h> #define I 3 #define J 3 main () подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.09.2012, 21:43     Как выделяется память под массив string?
Ну вроде вы на верном пути если упростить строку и считать ее указателем на символы, то примерно это выглядит так:

C++
1
2
3
4
[s   s    s    s    s  ...   s] - это указатели на массивы байт, в которых хранятся символы строки. размер указателей фиксированный
     |              |
     |              |
    ["dfsdf"]    ["sdfsfsfsdfsfsfsfsfsfsfsd"]  -  a это то, на что эти указатели указывают.
Т.е. для выделения 10 строк в массиве нужно вполне конкретное количество байтов памяти, равное N = sizeof(std::string) * 10, и то, что внутри себя эти std::string указывают на область памяти любого размера не влияют на это число N.
 
Текущее время: 18:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru