Malloc структура в определенной точке памяти?

Я пытаюсь создать структуру в определенном месте памяти:

struct inRAM *ptr = (struct inRAM*)malloc(sizeof(struct inRAM));

Но эта строка выделяет память только в том месте ОЗУ, которое нельзя сохранить. Мне нужно, чтобы malloc начинался с определенного адреса памяти, чтобы он работал правильно, но как?


person Kevin Kelly    schedule 05.11.2015    source источник
comment
Вы пытаетесь выполнить ввод-вывод с отображением памяти во встроенной системе?   -  person user3386109    schedule 05.11.2015
comment
Зачем вам malloc, если у вас уже есть место в памяти, куда оно должно идти? Присвойте значение указателю.   -  person Weather Vane    schedule 05.11.2015
comment
Спасибо за ваш комментарий, @WeatherVane. Вы правы, мне вообще не нужен malloc!   -  person Kevin Kelly    schedule 05.11.2015


Ответы (1)


Для встраиваемых систем, где вам необходимо получить доступ к определенным адресам памяти для ввода-вывода, вы обычно пишете непосредственно по этому адресу.

Здесь вам не нужен malloc, который используется для управления блоками памяти или структурами, где вам все равно, где они будут расположены.

например написать на адрес c00010

ptr = c00010;
ptr->field = value;

Кроме того, при использовании структур, наложенных на память, будьте осторожны с заполнением и выравниванием структуры.

person hookenz    schedule 05.11.2015
comment
Идеальный. Спасибо. Вы помогли мне осознать мою настоящую проблему: когда я пытаюсь добавить узел в связанный список, начиная с определенной точки памяти, следующий узел не увеличивается, и поэтому он продолжает перезаписывать исходный узел в ОЗУ. Простое исправление: struct inRAM *ptr = head; стала структурой в ОЗУ *ptr = head++; Спасибо еще раз! - person Kevin Kelly; 05.11.2015