さて、私は呼び出すメソッドを持っています。呼び出されたメソッドは、呼び出されたメソッドの内部に割り当てられたchar*
を返します。返されたchar*
を新しいchar*
に割り当てた後、私はそれを使用した後で解放したい。しかしXcodeは文句を言ってエラーを投げます。それは私が自由にしようとするオブジェクトは割り振られていないと言いますが、私はそれを割り当てると確信しています。ここでc:割り当てられたオブジェクトのエラーを解放する
は私のコードです:
void print_r()
{
char *stateA = isActive(ruter_array[id]->flagg);
//print out the results etc
free(stateA); <-----The program crashes here.
}
char * isActive(unsigned char a_flag)
{
char *ret = malloc(5);
if((a_flag & 1) == 1)
{
//is active
ret = "yes";
return ret;
}
ret = "no";
return ret;
}
これが何をするのか理解することは重要ではない。その、なぜこの解放がクラッシュしていますか?
'isActive'は文字列定数" yes "または文字列定数" no "へのポインタを返します。これは、何か他のもの(文字列定数)であるため、割り当てられていないオブジェクトです。また、オブジェクトをmallocateし、そのオブジェクトへのポインタを返しません。 (また、 "mallocate"は一般的な用語ではありませんが、それは動作します) – immibis