Speicherzugriffsfehler



  • Hallo zusammen, ich habe ein Programm gemacht, welches einen Posix Thread erstellt:

    #include<iostream>
    #include<pthread.h>
    
    using namespace std;
    
    void* count(void * a);
    
    int main()
    {
    int * a;
    cout<<"a: ";
    cin>>*a;
    pthread_t p1;
    pthread_create (&p1, NULL, count, (void*) a);
    }
    
    void* count(void * a)
    {
    int * b;
    b = (int*) a;
    int i=0;
    while(i < *b)
    {
    i++;
    sleep(1);
    cout<<i<<endl;
    }
    }
    

    Kompilieren geht, aber wenn dann "a: " kommt und ich eine Zahl eingebe kommt die Meldung: Speicherzugriffsfehler.

    Woran liegt das?

    Danke schonmal.



  • Rastaman schrieb:

    Woran liegt das?

    Weil Du offensichtlich keinen blassen Schimmer hast was ein Zeiger ist.

    int *a erzeugt einen Zeiger, der aber erstmal keien Adresse hat. Daher geht ein Zugriff auf den Zeiger auch ins Leere., sprich Speicherzugriffsfehler.

    Was Du eigendlich machen willst ist

    int a;

    Und was Du wirklich machen solltest: Mal die Zeit nehmen und ein Grundlagentutorial zum Thema Zeiger lesen.



  • Oh sry, des wahr ein Leichtsinnsfehler.

    Eigentlich weiß ich schon was ein Zeiger ist.



  • Rastaman schrieb:

    Oh sry, des wahr ein Leichtsinnsfehler.

    Dass du es zuerst falsch gemacht hast war der Leichtsinnsfehler. Aber du solltest mal tief in dich gehen und drüber nachdenken, warum du ihn dann nicht selber gefunden hast.
    Das ist an sich keine Schande, so ging es jedem mal, aber über dieses Stadium sollte man IMHO lange hinweg sein, bevor man sich mit Threads beschäftigt.


Anmelden zum Antworten