我一直在使用函數指針和個人項目的結構。當我編譯並運行我的代碼時,當我試圖釋放指針時,出現「中止(核心轉儲)」錯誤。爲什麼釋放指針會導致程序中止?
我有以下代碼(不包括進口):
typedef int (*intFunction)(int,int);
typedef struct {
int value;
intFunction func;
} ValueFunc;
int addInts(int a, int b){
return a + b;
}
int main(){
ValueFunc vf;
vf.value = 3;
vf.func = &addInts;
int y = vf.func(vf.value,4);
printf("%i",y);
free(vf.func);
return 0;
}
如果有人可以解釋爲什麼發生這種情況我會非常感激。
您正在嘗試釋放尚未分配的動態過程中的東西給它很可能會失敗的任何錯誤。 – juanchopanza 2014-10-27 16:26:55
您是否嘗試編譯完整的警告?並且從函數指針到'void *'的轉換通過了未標記的?看到這裏:http://coliru.stacked-crooked.com/a/8a9598c6388c6b3a – Deduplicator 2014-10-27 16:29:18
你爲什麼要釋放那個可憐的函數指針? – 2014-10-27 16:31:54