[C++/Linux] shared memory Problem



  • Hallo @all,

    ich möchte ein Programm schreiben, welches über shared memory Daten mit einem anderen austauscht. (Socket möchte ich nicht veerwenden)

    Folgenden Code habe ich schon.

    int shID;
    	int *data;
    	int i;
    	int eingabe, signal;
    
    	/* Shared Memory erstellen */
    	shID = shmget(2404, MAXMYMEM, IPC_CREAT | 0666);
    	if (shID >= 0)
    	{
    		data = shmat(shID, (void *)0, 0); // <- hier Fehler
    		if (*data == -1) {
    			perror("shmat failed");
    		}
            }
    

    Ich bekomme folgende Fehlermeldung.

    error: invalid conversion from ‘void*’ to ‘int*’
    

    und zwar hier

    data = shmat(shID, (void *)0, 0);
    

    kann mir da jemand helfen? Laut meiner Literatur ist das so richtig, aber g++ gibt obigen fehler aus.

    Ich danke schonmal.

    Grüße
    tYREL



  • Ne, das ist in C++ nicht richtig. Deine Literatur verwendet vermutlich C und ein fundamentaler Unterschied zwischen C und C++ ist, dass void* nicht mehr implizit gecastet wird.

    Also einfach selbst casten.

    data = static_cast<int*>(shmat(shID, 0x0, 0));
    


  • 😋 Super vielen Dank. 👍 Jetzt läuft es.
    Vielen Dank.
    tYREL


Anmelden zum Antworten