私はmalloc()を使って動的にメモリを割り当て、次にfree()を使ってみたときにリンクリストプログラムを試していました。関数は無限ループに入ります。free()を使用すると、C言語のプログラムが無限ループになります。
どうしてですか?
void Insert(int x, int pos)
{
struct Node *newnode = (struct Node*) malloc(sizeof(struct Node));
newnode->data = x;
newnode->next = NULL;
struct Node* temp, *left, *right;
int i = 1;
temp = head;
if(head == NULL)
{
head = newnode;
}
else{
while(i != pos - 1)
{
temp = temp->next;
i++;
}
newnode->next = temp->next;
temp->next = newnode;
}
free(newnode);
}
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –
無料なので、無限ループに陥っているのですか?それはかなり奇妙です... – Silveris
なぜあなたはそこで自由になりますか?ドン;後で使用したい? –