自己編寫的程序,並且我已經建立這種結構波段故障使用malloc()用C
struct position_found
{
int row;
int column;
struct position_found *next;
};
typedef struct position_found position_found, *position_found_ptr;
,然後我使用該函數來創建一個新的節點類型position_found
position_found_ptr new_position_found_node(int row, int column)
{
position_found_ptr x;
x=(position_found_ptr)malloc(sizeof(position_found));
if(x==NULL)
{
printf("out of memory");
exit(2);
}
x->row=row;
x->column=column;
x->next=NULL;
return x;
}
的問題在於x =(position_found_ptr)malloc(sizeof(position_found));提供seg錯誤,但是如果我在此之前打印某些東西,例如printf(「k」),malloc將正常工作,並且我的程序將繼續。我試過在測試程序中使用它自己的功能,它完美地工作。你有什麼想法發生了什麼?
是的,您在程序中調用了未定義的行爲。 –
你有沒有包含stdlib.h? –
通過'valgrind'或其他內存調試器運行你的代碼。它應該可以幫助你追蹤真正的問題。 – FatalError