Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 21.02.2017
Сообщений: 18
1

Как склеить два куска динамически выделенной памяти?

12.04.2017, 23:24. Просмотров 448. Ответов 1
Метки нет (Все метки)

Есть такой код
C++
1
2
3
char *arr = (char *) malloc(1);
char *plus = (char *) malloc(25);
arr = memcpy(arr + 1, plus, 25);
Вопрос: можно ли вообще такое делать? plus будет расположен через 15 или 16 байт после arr. Насколько мне известно, некоторые из этих байтов (если не все) будут заняты служебной информацией об указателе plus (размер блока выделенной памяти и т.п.), а значит, после memcpy эта информация просто исчезнет?
Вопрос 2: допустим, что она таки исчезнет. Если я впоследствии сделаю
C++
1
free(arr);
то будет освобожден только один байт, на который указывает arr? Ведь служебная информация, кажется, не изменялась.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2017, 23:24
Ответы с готовыми решениями:

Как обнулить указатель на одну ячейку в динамически-выделенной памяти?
Выделю память под 10 элементов: int* p = new int; Наполняю значениями: for(int i = 0; i<10; i++)...

Мусор в памяти, выделенной динамически
Есть код, выполняет разархивацию файла, закодированного LZ77. Вот его основная часть: цикл в...

Ошибка при удалении динамически выделенной памяти
Добрый день, хочу удалить выделенный массив, но выдает ошибку. Вот собственно код создаваемой...

Очень долгое освобождение динамически выделенной памяти
Все никак не могу разобраться с одной проблеммой! У меня есть отображение, в котором хранятся...

1
281 / 235 / 114
Регистрация: 07.09.2016
Сообщений: 587
13.04.2017, 00:01 2
так делать нельзя. рассчитывать на то, где маллок возьмет память нельзя. вы засрали память и после этого может
случится что угодно и где угодно (ничего не произойдет - частный случай). UB в общем.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2017, 00:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как склеить два файла в один?
Вообщем проблема в том, что мне нужно записывать в начало файла. я создаю новый файл записываю в...

Как уменьшить размер выделенной памяти
Доброе утро! пишет: переопределение формального параметра "text" :( подскажите пожалуйста как...

Как добавить новой динамической памяти к уже выделенной
Добрый вечер! У меня есть следующий вопрос: Допустим я выделил для некоторой строки память char...

Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
Скажем я в какой-то момент выделяю память под массив: int *a = new int ; затем память может...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.