這裏我想創建動態內存。 這裏我知道輸出大小,我想打印while循環後的最後輸出。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);
}
...或者'NULL'如果分配失敗。 – unwind 2012-01-30 15:08:07
詳細說明,'sizeof(results)'和'sizeof(buffer)'返回在編譯時實際已知的指針的大小。標準C無法查詢動態分配的內存塊的大小。因此你必須記住你分配了多少。 – 2012-01-30 15:22:46
你可以告訴我,我必須做些什麼來改變它,我的代碼工作正常嗎? – user1089679 2012-01-30 17:05:41