Ik heb een programma waar ik een stuk geheugen share:
En in een ander programma lees ik deze waarden als volgt weer uit:
Nou werkt dit helemaal goed, tenzij ik in de struct een pointer plaats, zoals bijvoorbeeld int* c, dan kunnen geen van de waarden gelezen worden (a en b staan op 0 en bij c staat Error, expression cannot be evaluated.
Ik compileer alles op dezelfde computer onder hetzelfde os. Wel gebruik ik twee verschillende compilers, maar dit zou voor de omvang van int's en pointers naar int's toch niets uit moeten maken? En als ik een pointer naar een array van chars stuur, of een enkele pointer naar een int werkt het wel. Alleen pointers binnen de struct werken niet. Iemand enig idee?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| typedef struct teststruct { int a, b; } TESTSTRUCT_DES; TESTSTRUCT_DES TESTSTRUCT; TESTSTRUCT_DES *Memory; HANDLE hFile = CreateFile ("c:\\test.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); hMemory = CreateFileMapping (hFile, NULL, PAGE_READWRITE, 0, 10*sizeof(int), "KILNLOGMEM"); Memory = (TESTSTRUCT_DES*)MapViewOfFile (hMemory, FILE_MAP_WRITE, 0, 0, sizeof(TESTSTRUCT_DES)); TESTSTRUCT.a=1; TESTSTRUCT.b=2; Memory = &TESTSTRUCT; |
En in een ander programma lees ik deze waarden als volgt weer uit:
C++:
1
2
| hMemory = OpenFileMapping(FILE_MAP_READ, 0, "KILNLOGMEM"); Memory = (TESTSTRUCT_DES*) MapViewOfFile(hMemory, FILE_MAP_READ, 0, 0, sizeof(TESTSTRUCT_DES)); |
Nou werkt dit helemaal goed, tenzij ik in de struct een pointer plaats, zoals bijvoorbeeld int* c, dan kunnen geen van de waarden gelezen worden (a en b staan op 0 en bij c staat Error, expression cannot be evaluated.
Ik compileer alles op dezelfde computer onder hetzelfde os. Wel gebruik ik twee verschillende compilers, maar dit zou voor de omvang van int's en pointers naar int's toch niets uit moeten maken? En als ik een pointer naar een array van chars stuur, of een enkele pointer naar een int werkt het wel. Alleen pointers binnen de struct werken niet. Iemand enig idee?
[ Voor 6% gewijzigd door Verwijderd op 20-06-2003 03:35 ]
