|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.03.2018, 18:17 | #1 |
Пользователь
Регистрация: 05.09.2017
Сообщений: 21
|
C выделение памяти под строку
Здравствуйте у меня вопрос на засыпку
можно ли выделить память под указатель на строку realloc или malloc или с указателем на строку нельзя ничего делать кроме как читать вот пример: Код:
|
30.03.2018, 18:45 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Нельзя ничего делать кроме как читать.
Ничто не мешает выделить *новый* блок памяти и скопировать строку туда. Именно так работает strdup(). |
30.03.2018, 22:20 | #3 |
Пользователь
Регистрация: 05.09.2017
Сообщений: 21
|
strdup() работает с malloc а это значит новый кусок памяти. но у меня ситуация совсем иначе у меня два указателя на две строки я хотел скопировать из src в dst и в моём случае должно было получится dst = "Hello World"
|
30.03.2018, 23:11 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
А зачем копировать?
Присвойте указатель и все: dst = src; |
31.03.2018, 01:43 | #5 |
Пользователь
Регистрация: 05.09.2017
Сообщений: 21
|
Тогда я просто заменю строку. Нет не возможно сделать ничего с указателем на строку всё перепробовал. realloc не позволяет делать, а malloc переопределяет память и строка исчезает. только с вспомогательным указателем можно соединить две строки.
|
31.03.2018, 13:54 | #6 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Это вообще не полностью верно
Код:
Код:
Для ваших манипуляцяций необходимо выделять память в процессе работы через malloc и в нее уже копировать че угодно. Такое поведение компилятора позволяет экономить, например, если у вас в коде будет 20 раз "Hello ", то компилятор сделает всего 1 копию, а везде использует указатель на нее (это задается ключами компиляции). Или вы программируете дрон - тогда эти "Hello " вообще окажутся в постоянной памяти, которую нельзя изменить вне завода в полете. Т.о. вобщем то, что вы пытаетесь делать не корректно, можно применять в узком случае написания вирусов/защит для винды (а на линуксе/маке все равно не заработает). Последний раз редактировалось alexzk; 31.03.2018 в 14:07. |
31.03.2018, 18:25 | #7 |
Пользователь
Регистрация: 05.09.2017
Сообщений: 21
|
Спасибо то что и ожидал услышать. По этому и спросил если возможна такая вещь.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выделение памяти под приложение. | Nikolay2015 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 10.12.2017 21:42 |
Выделение памяти под матрицу | yakimechik | Общие вопросы C/C++ | 1 | 22.01.2016 08:33 |
Динмическое выделение памяти под строку | retrix147 | Общие вопросы C/C++ | 9 | 25.09.2013 17:54 |
Выделение памяти под структуру. Си | Vitany | Помощь студентам | 0 | 05.12.2012 17:50 |
выделение памяти под массив на C | Kingdom_Reborn | Помощь студентам | 12 | 12.01.2011 04:40 |