Мне нужна некоторая помощь с некоторым размышлением вокруг задачи.Память и указатели
Моя задача состоит в том, чтобы создать площадь одной памяти
void *memory = malloc(320);
, а затем использовать указатели для хранения текстов в это место хранения: Мы хотим разделить эту область на блоки данных по 32 байта, засеять можно хранить: 320/32 = 10 блоков данных - 32 байта. В один блок данных я могу хранить (1 ASCSII char = 1 байт) 32 символа.
У меня есть растровое изображение длиной 10, где каждый бит указывает, используется ли блок данных (1) или нет (0).
Но что, если я хочу сохранить текст длиной 60 символов? Тогда мне нужно 2 блока данных (2 x 32 байта). Растровое изображение показывает, что блоки данных 2 и 6 свободны, 1 и 6 не бок о бок. Как я могу это достичь?
struct data {
char * text;
};
typedef struct data d;
d->text = ???
Если не существует двух смежных свободных блоков, вы не можете удовлетворить запрос для 60-байтовой строки. Вы только что обнаружили «фрагментацию памяти»: http://en.wikipedia.org/wiki/Memory_fragmentation –
Таким образом, вашими единственными параметрами были бы дефрагментация (которая требует от людей не удерживать указатели) или выделять больше памяти. – EboMike
или для создания цепей – pm100