[问题] 把函式储存在 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