我想要做的就是使用用戶輸入使用結構指針進行基本打印。當我嘗試使用下面的代碼時,我得到segmentation fault
。我是新手,無論如何。將scanf值傳遞給結構指針分割錯誤
typedef struct {
int *licenseNum;
char *name;
char *region;
} City;
typedef struct {
struct Node *current;
struct Node *head;
struct Node *tail;
struct Node *next;
struct Node *secondNext;
City *data;
} Node;
int main()
{
Node *node = malloc(sizeof(Node));
City *city = malloc(sizeof(City));
puts("License number of the City: ");
scanf("%d", &(node -> data -> licenseNum));
printf("%d", node -> data -> licenseNum);
return 0;
}
就是這樣。我學到了另外一件事,非常感謝。 – Miral
不應該使用'free(node)'和'free(city)'來釋放動態分配的資源嗎? –
@SatyaPawan是的,他應該,但那不是問題的一部分。這將是問題「爲什麼我的代碼泄漏內存?」的一部分;-)泄漏內存對於只執行一個操作然後在退出時退出的應用程序並不一定是關鍵的,應用程序的所有分配的內存總是返回到操作系統並因此被隱式釋放,所以調用它會有什麼不同在應用程序退出前兩次「免費」?這沒有什麼區別。如果你打算讓你的應用程序運行幾個小時,你必須預算記憶當然 - 或者接受你的應用程序需要它的GB :-P – Mecki