alıyorum sorunları kullanarak boşaltma sonra bir işaretçi kullanarak: Ben bir segment hataya alıyorumaşağıdaki kod tipi ile serbest()
int* myPointer1 = malloc(50 * sizeof(int));
int* myPointer2 = malloc(50 * sizeof(int));
free(myPointer1);
myPointer1 = myPointer2;
myPointer1[0] = 3;
. Sorun ne?
Malloc işlemlerinin başarılı olduğundan emin olmak için kontrol ettiniz mi? eğer olmasa da myPointer1'i NULL olarak atayabilirsiniz. – djhaskin987
Nerede segfault musunuz? 'Free (myPointer1)' veya 'myPointer1 [0] = 3' 'de mi? – Seth
Eğer malloc başarılı olursa segfault olmamalıdır. Yaptığınız tek şey, "myPointer1" in orijinal belleğinde hafızayı boşaltmak ve myPointer1'i myPointer2'nin yerine yeniden atamaktır. Ancak, bu son belleği biraz boşaltacaksanız, aynı adrese işaret ettiğinden yalnızca işaretçilerden (yani "myPointer1" VEYA "myPointer2") birini boşaltmak isteyeceksiniz. – RageD