Tutaj chcę utworzyć dynamicznie pamięć. tutaj nie znam wielkości wyjściowej i chcę wydrukować ostatnie końcowe wyjście po pętli while.Usterka segmentacji w Realloc
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char *sdpCommand = "sdptool browse 04:18:0F:B1:48:B5";
FILE *fp;
fp = popen(sdpCommand, "r");
char *results = 0;
if (fp == NULL) {
printf("Failed to run command\n");
return;
}
char* buffer = malloc(514);
while (fgets(buffer, strlen(buffer) - 1, fp) != NULL) {
realloc(results, strlen(results) + strlen(buffer));
memcpy(results + strlen(results), buffer, strlen(buffer));
}
printf("Output ::: %s", results);
/* close */
pclose(fp);
sleep(1);
}
... lub 'NULL' jeśli przydział nie powiodło. – unwind
Aby rozwinąć, 'sizeof (wyniki)' i 'sizeof (buffer)' zwracają rozmiar wskaźników, które są znane podczas kompilacji. W standardzie C nie ma sposobu na zapytanie o wielkość dynamicznie przydzielanego bloku pamięci. Dlatego musisz pamiętać, ile przeznaczyłeś. –
Czy możesz mi powiedzieć, gdzie muszę to zmienić, a mój kod działa poprawnie? – user1089679