Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176

Указатели на строки. Выделение и освобождение памяти

06.06.2012, 13:53. Показов 2070. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день.
Есть два указателя на char. Для первого выделяется память а у второго просто делаем копию с первого.
Для 1-го указателя надо удалять выделенную память. А вот для второго непонятно. То ли удалять, то ли нет. Ведь для него не используется операция new. Вообщем хочу понять как правильно. Подскажите.
Code
1
2
3
4
5
6
7
8
9
10
    char *s, *s_copy;
 
    s = new char[20];
    strcpy(s, "Строка");
    s_copy = s;
 
    ...
 
    delete [] s;
    //delete [] s_copy; // как правильно? И нужно ли вообще удалять?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2012, 13:53
Ответы с готовыми решениями:

Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными
Задана матрица A(n,n) ,n<=15 . Написать программу, которая находит и выводит на экран номера тех строк, элементы которых не...

Освобождение памяти и указатели
int **Matrix1 = new int*; // Создаем 1-ю матрицу for (int i(0); i < N1; i++) Matrix1 = new int; Подскажите пожалуйста, как...

Указатели. Освобождение памяти в функции
Здравствуйте, разбираю учебный код, к сожалению, нет к нему комментария на нужный мне вопрос: В функцию передается значение по указателю,...

7
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
06.06.2012, 14:05
у вас s и s_copy содержат адрес одной области памяти, поэтому осводив память через один указатель, другой станет невалидным
0
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 14:11  [ТС]
Нет. У них адреса получаются разные. Вот на скриншоте.
Миниатюры
Указатели на строки. Выделение и освобождение памяти  
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
06.06.2012, 14:21
как вы получили эти адреса?
через аперсанд &s?
если так, то это адрес переменно s, а не адрес который она содержит) не путайте.
0
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 14:25  [ТС]
Цитата Сообщение от antoha398 Посмотреть сообщение
как вы получили эти адреса?
Code
1
2
    cout << "     s = " << s            << "     , &s = " << &s     << endl;
    cout << "s_copy = " << s_copy       << ", &s_copy = " << &s_copy    << endl;
Добавлено через 2 минуты
Цитата Сообщение от antoha398 Посмотреть сообщение
это адрес переменно s, а не адрес который она содержит) не путайте.
Вот это я что-то не совсем понимаю. То есть адрес у указателя на char может быть один, а адрес что в нем хранится совсем другой?
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
06.06.2012, 14:41
То есть адрес у указателя на char может быть один, а адрес что в нем хранится совсем другой?
да. у любой переменной( в том числе указателя) есть адрес, по которому она хранится в памяти. его можно получить так &s;
а переменная-указатель может хранить эти адреса, как например, тип int хранит целые числа.

Добавлено через 4 минуты
не знаю как получить адрес содержащийся в укателе на char
поэтому привожу пример для int
C++
1
2
3
4
5
6
int *s, *ss;
   s = new int[10];
    s[0]=11;
    s=ss;
    cout << &s <<endl << &ss << endl;
   cout << s <<endl << ss;
1
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
06.06.2012, 14:46  [ТС]
Спасибо antoha398. Но вот что еще хочу спросить. Не до конца понял. Есть указатель на char *s_copy;
И когда вот так делаем
Code
1
s_copy = s;
Это получается что у s и s_copy указывают на одну и ту же память? Или они указывают на одну и ту же строку? Что- то никак не могу понять

Все, понял. Я пока написал то вы уже ответили
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
06.06.2012, 14:48
они указывают на одну память, в которой хранится строка)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2012, 14:48
Помогаю со студенческими работами здесь

Выделение-освобождение памяти
Добрый день. Написал заготовку под программу. Возник вопрос: правильно ли выделяю-освобождаю память? Программа работает корректно, но...

Выделение и освобождение памяти
работаю со структурой на Си struct Matrix{ float **a; int n; } Структура реализует симметричную матрицу ...

Выделение и освобождение памяти
Вот встретился с вопросом какой вариант является более правильным и почему. char *Buffer1 = (char *)malloc(65536) char *Buffer2 =...

Выделение и освобождение памяти
Приветствую всех, Возник вопрост при работе с выделением памяти. Есть клас, в котором рисуется некий элемент(Фрейм), в дети к этому...

Выделение и освобождение памяти
Доброго времени суток. Пишу класс по ООП, и назрел один вопрос, связанный с моментом выделения и освобождения памяти. class SOK { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru