Hallo,
Der Fehler liegt bei malloc(1);
Das reserviert 1 Byte, da passt aber kein double rein!
Was genau passiert kann dir jetzt aber keiner sagen, im Prinzip überschreibst du etwas, was hinter dem Speicherbereich von malloc() liegt.
Damit der Heap nicht zu sehr fragmentiert, reserviert malloc() immer ein ganzzahliges vielfaches einer konstanten Anzahl Bytes, der Wert nennt sich Granularity.
Richtig für die Benutzung von malloc ist:
puffer = (double *) malloc( sizeof(double) );
Ob das jetzt zum Aufruf von snd_pcm_readi() passt, ist eine andere frage und steht in der Beschreibung dieser Funktion.
MfG Peter(TOO)
Lesezeichen