[問題] 把函式儲存在 heap

作者: OPIV (Monitor)   2014-12-30 23:56:04
有試過宣告一個函數a裡面定義一個函數b之後return *b,編譯有過,但是return回來的
還是b在a的stack裡的位址,而不是b本身的值
不知道要怎樣才能把函數內容儲存在heap裡面?
目前的程式大概像這樣:
void *a() {
int b(int c) {
printf("%d", c);
return 0;
};
return *b;
}
int main(int argc, char *argv[]) {
int (* func)(int c) = malloc(sizeof(func));
func = a();
return 0;
}
作者: LPH66 (-6.2598534e+18f)   2014-12-30 23:57:00
函式裡的函式基本上不通用, 你想達成什麼效果?
作者: PkmX (阿貓)   2014-12-31 00:44:00
先去翻一下一般C的程式是怎麼在memory space中擺放的吧?
作者: CaptainH (Cannon)   2014-12-31 03:00:00
函數內函數不在標準內,是gnu extension似乎沒提供類似閉包的功能
作者: LPH66 (-6.2598534e+18f)   2014-12-31 07:54:00
沒有閉包不過好像有 lexical scoping 的樣子達成的方法是個叫 trampoline 的技巧讓內層函式有外層的 sp
作者: descent (「雄辯是銀,沉默是金」)   2014-12-31 09:35:00
用 function object 可以達到你要的效果嗎?
作者: kingofsdtw (不能閒下來!!)   2013-01-01 14:47:00
struct 放heap?
作者: tubbysong (song)   2013-01-01 19:51:00
Google Object-Oriented Programming With ANSI-C pdf
作者: TobyH4cker (Toby (我要當好人))   2013-01-08 12:31:00
return (void *)b; ?

Links booklink

Contact Us: admin [ a t ] ucptt.com