- Копирование указателя и выделение памяти, datswd, 21:02 , 17-Сен-20 (1)
И что именно происходит, если сделать вот такЖ char *a, *b; b = malloc(1); a = b; a = realloc(a, 1000); strcpy(a, ";aaa"); printf("%s", b);
- Копирование указателя и выделение памяти, ACCA, 04:49 , 21-Сен-20 (5)
> И что именно происходит, если сделать вот такЖ > char *a, *b; > b = malloc(1); > a = b; > a = realloc(a, 1000); > strcpy(a, ";aaa"); > printf("%s", b); Сильно лучше и даже заработает, но нафига тебе realloc? Ты уж сразу определись, чего ты хочешь. Сэкономишь realloc=malloc+memcpy+memfree. Не?
- Копирование указателя и выделение памяти, datswd, 19:46 , 22-Сен-20 (7)
>> И что именно происходит, если сделать вот такЖ >> char *a, *b; >> b = malloc(1); >> a = b; >> a = realloc(a, 1000); >> strcpy(a, ";aaa"); >> printf("%s", b); > Сильно лучше и даже заработает, но нафига тебе realloc? > Ты уж сразу определись, чего ты хочешь. Сэкономишь realloc=malloc+memcpy+memfree. Не? Насчет заработает - далеко не факт. Если будет в текущем расположении блока достаточно места, чтобы просто его расширить, то да, заработает. А если места будет не достаточно, то указатель переедет на другое место и ничего не заработает.
- Копирование указателя и выделение памяти, Ivanr, 17:04 , 22-Ноя-20 (13)
> И что именно происходит, если сделать вот такЖ > char *a, *b; > b = malloc(1); > a = b; > a = realloc(a, 1000); > strcpy(a, ";aaa"); > printf("%s", b); Тут у тебя как повезет, реаллок может вернуть старый указатель, а может новый, но писать на авось это плохо
- Копирование указателя и выделение памяти, PavelR, 09:26 , 18-Сен-20 (2)
Используй указатель на указатель.
- Копирование указателя и выделение памяти, datswd, 14:38 , 18-Сен-20 (3) +1
> Используй указатель на указатель.Вот что получилось char **a, *b; a = &b; *a = malloc(100); strcpy(*a, "some string"); printf("b=%s\n", b); printf("a=%s", *a); Шикааааарно.
Пасиб! :)
- Копирование указателя и выделение памяти, ACCA, 04:30 , 21-Сен-20 (4) –1
Ты бы ещё взялся др*чить вприсядку. И на*шься и напляшешься. Просто думай, куда что ты суёшь:a = malloc(100); b = a; strcpy(a, "lolo"); printf("%s", b);
- Копирование указателя и выделение памяти, datswd, 18:46 , 21-Сен-20 (6)
Большое спасибо за комментарий.Ваш комментарий - идеальная иллюстрация поговорки: "Слышал звон, да не знает где он" Хммм.... А что если вы продолжите в том же духе? Можно попробовать сделать справочник поговорок. Только модератора нужно будет попросить вынести это в отдельную тему :)
- Копирование указателя и выделение памяти, ACCA, 04:37 , 23-Сен-20 (8) –1
Ты опять ничего не понял. Вместо траха с указателем на указатель, тебе нужно было перенести присвоение значения переменной на момент, когда у неё появилось значение.А не писать ерунду вроде
char *a, *b; a = b;
когда ты присваиваешь одной неинициализированной переменной значение другой неинициализированной переменной. Про присядку ты в курсе.
- Копирование указателя и выделение памяти, datswd, 15:14 , 23-Сен-20 (9)
Эххх.... Вы решили по кругу пройтись.... Прочитайте предыдущую поговорку. И в следующий раз, пожалуйста, имейте это в виду, чтобы какую-нибудь другую применить можно было :)Ну да ладно. Задача как раз и стоит в том, чтобы связка не терялась ни при malloc, ни при realloc. То есть чтобы оставался линк на указатель даже после изменения области памяти, на которую он указывает. Бедненький.... Сходите на какой-нибудь тренинг по общению с людьми... Вместо того, чтобы просто спросить: "Я для чего это вам?", вы пишете какие-то странные вещи....
- Копирование указателя и выделение памяти, datswd, 15:39 , 23-Сен-20 (10)
> "Я для чего это вам?"*"А для чего это вам?"
- Копирование указателя и выделение памяти, Аноним, 10:39 , 29-Сен-20 (11)
Товаришь про присядку очень даже прав. Везде прямым текстом пишут - не надо вприсядку, указатели это весьма запутанная штука и без присядки легко сломать глаза, а если вприсядку так вообще . На лодошках поди уже щитина пробилась ?
- Копирование указателя и выделение памяти, Ivanr, 16:58 , 22-Ноя-20 (12)
>[оверквотинг удален] > Потом мы делаем > a = b > a = malloc(100); > strcpy(a, "lolo"); > printf("%s", b); > Когда делается malloc связка между a и b теряется. И printf выводит > null. > Можно ли как-нибудь сделать так, чтобы связка между указателями не терялась и > printf выводил "lolo"? > Заранее благодарен.Когда выполняется следующая команда: a = malloc(100) То значение, ранее содержащееся в переменной а заменяется тем, что вернул маллок
|