zurückgegeben werden. Ich möchte mithilfe einer Funktion einem Zeiger Speicher zuweisen. Im Anschluss ist der Code, den ich geschrieben habe:Speicher kann nicht innerhalb einer Funktion zugewiesen und in C
#include <stdio.h>
#include <stdlib.h>
int test(unsigned char **q)
{
*q = (unsigned char *) malloc(250);
if(*q == NULL)
{
printf("\n Error: failed to allocate memory");
return -1;
}
// *q[0] = 10;
// *q[1] = 10;
*q[2] = 10;
return 0; /* Returns 0 on success, non-zero value on failure */
}
int main(void)
{
unsigned char *p;
// printf("\n &p = %u", &p);
int result = test(&p);
// printf("\n p[2] = %d", p[2]);
return 0;
}
Wenn ich etwas in *q[0]
oder *q[1]
schreiben, gibt es keinen Fehler. Aber wenn ich versuche, etwas in *q[2]
zu schreiben, gibt es "Segmentation fault (core dumped)".
Auch ich bekomme alle Daten als 0 mit p[ ]
außer p[0]
.
Was ist falsch an diesem Code?
Willkommen bei Stack Overflow! [Bitte lesen Sie die Diskussion darüber, warum der Rückgabewert von 'malloc()' und die Familie in 'C' nicht umgewandelt werden soll.] (Http://stackoverflow.com/q/605845/2173917). –
'* q [2] = 10;' sollte sein '(* q) [2] = 10;'. – mch
Mangel an Wissen! = Typo. Abstimmung zum erneuten Öffnen Fühlen Sie sich frei, als dupe zu schließen. –