Возможно ли иметь конструктор копирования, если класс имеет указатель адреса mmap? Я думаю, что mmap был вызван только один раз, и поэтому в ядре была зарегистрирована только одна ссылка. Теперь два объекта обмениваются этим адресом, когда 1 удаляется, что происходит с этим адресом? Наверное, это очищено. Если возможно, будет ли файл mmap обрабатывать синхронизацию для меня?Копировать конструктор с адресом mmap
0
A
ответ
2
shared_ptr
ваш друг здесь:
#include <sys/mman.h>
#include <memory>
std::shared_ptr<void> map_some_memory(void *addr, size_t length,
int prot, int flags,
int fd, off_t offset)
{
auto deleter = [length](void* p) {
munmap(p, length);
};
// use of a custom deleter ensures that the mmap call is undone
// when the last reference to the memory goes away.
return { mmap(addr, length, prot, flags, fd, offset), deleter };
}
// some function that gets you a file descriptor
extern int alloc_fd();
int main()
{
int some_file = alloc_fd();
// allocate a shared mapping
auto my_mapped_ptr = map_some_memory(nullptr, 100, PROT_READ | PROT_WRITE,
MAP_SHARED, some_file, 0);
// cast it to sometthing else
auto shared_ints = std::shared_ptr<int>(my_mapped_ptr,
reinterpret_cast<int*>(my_mapped_ptr.get()));
// another shared pointer pointing to the shared ints
auto another_share = shared_ints;
}
+0
Спасибо, я посмотрю на это. Я также думаю о том, чтобы сделать мой класс несовместимым. – user1876942
+0
@ user1876942 В этом случае 'unique_ptr' с пользовательским типом удаления является вашим другом –
Смежные вопросы
- 1. Копировать конструктор?
- 2. Копировать конструктор ярлык
- 3. Копировать конструктор в python?
- 4. Копировать конструктор над присвоением
- 5. Копировать конструктор связанного списка
- 6. Копировать конструктор «структура атомного»
- 7. Копировать конструктор не называется?
- 8. Копировать конструктор в C++?
- 9. Копировать конструктор класса конкретизации
- 10. Копировать конструктор не работает?
- 11. Копировать конструктор или = оператор?
- 12. Копировать конструктор. Он работает
- 13. Определенный пользователем Копировать конструктор
- 14. Копировать конструктор без аргументов
- 15. Копировать конструктор, вызывающий конструктор копирования другого класса
- 16. Копировать конструктор и конструктор по умолчанию
- 17. Копировать конструктор изменяет std :: string
- 18. Копировать конструктор двусвязного списка (C++)
- 19. Boost interprocess_mutex копировать/перемещать конструктор?
- 20. IntelliJ не создает Копировать конструктор
- 21. Копировать конструктор вызывает деструктор C++
- 22. Копировать конструктор с разной структурой в C++
- 23. Копировать конструктор стека с помощью связанных списков
- 24. Копировать конструктор для класса с unique_ptr
- 25. Копировать конструктор с использованием личных атрибутов
- 26. Копировать конструктор с синтаксисом перегрузки назначения?
- 27. Копировать конструктор C++ weird behavoir?
- 28. Единственный список ссылок Копировать конструктор
- 29. Зачем копировать конструктор, вызывается дважды
- 30. Копировать конструктор "const" - ошибка компоновщика?
Почему негативы? Дайте некоторую обратную связь. – user1876942
Я думаю, отрицательный, потому что недостаточно информации для тех, кто может ответить на ваш вопрос. –
Это общий вопрос. Можете ли вы поместить указатель mmap в конструктор копирования? Какая информация вам нужна? – user1876942