Witam,
mam problem podczas zapisywania obiektów do pliku uzywając memory mappingu. Stworzyłem sobię klasę i chciałbym zapisać ją do pliku uzywajac mmap, ale za kazdym razem jak to robie, dostaje Segmentation fault, dlaczego?
Oto kod:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
using namespace std;
class klasa {
public:
string nazwa;
int numer;
};
int main(int argc, char* const argv[]) {
int fd;
fd = open ("plik", O_RDWR | O_CREAT | O_TRUNC,S_IRWXU);
lseek(fd, sizeof(klasa) + 1, SEEK_SET);
write(fd, "", 1);
lseek(fd, 0, SEEK_SET);
klasa* tmp = (klasa* )mmap(0, sizeof(klasa), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
tmp->nazwa = "abc";
tmp->numer = 3;
munmap (tmp, sizeof(klasa));
return 0;
}