Для проекта я должен сделать, я должен использовать:Использование ММАП() для отображения нескольких процессов совместно область памяти
void *ptr = mmap(NULL, N, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0);
где N
это число байтов памяти, чтобы попросить от ОС.
Когда этот оператор выполняет, то, что ptr
указывает на? Указывает ли он на начало разделяемой памяти между процессами? Кроме того, если в этом ящике памяти я хочу сохранить указатели 1000 int
, мне нужно иметь N = 1000 * sizeof(int *);
?
И если предположить, что я прав, где второе место в памяти, что я могу что-то хранить? Является ли оно ptr + 1
или ptr + 4
, потому что int *
составляет 4 байта в 32-битной системе?
Спасибо, я ценю это.
Да, да и на '((INT *) PTR) [1]' (что эквивалентно '* (((INT *) PTR) + 1)') –
Вы уверены, что хотите 'mmap()' стандартный поток io? Я бы рекомендовал 'mmap (NULL, N, flags, flags, -1, 0)', лично. – EOF
Это то, что мой инструктор дал нам, чтобы использовать для отображения региона региона между общими процессами @EOF – user3268401