p*****y 发帖数: 1049 | 1 请问,如果我创立一个函数指针,可以放在堆上吗?例如
int (*f)() = new int(*f) ()
?
如果不能,我写一个函数,返回函数指针,如何操作防止指针悬挂 ?例如
int(*)() f() ? |
p***o 发帖数: 1252 | 2 Functions are in text (code segment) so there is no need to worry about
dangling function pointers (unless you are going to generate some machine
code dynamically).
However, C++ has functors and lambdas and you need to allocate space for
them. I believe std::function is the best to handle those for you.
【在 p*****y 的大作中提到】 : 请问,如果我创立一个函数指针,可以放在堆上吗?例如 : int (*f)() = new int(*f) () : ? : 如果不能,我写一个函数,返回函数指针,如何操作防止指针悬挂 ?例如 : int(*)() f() ?
|
T*******x 发帖数: 8565 | 3 我试了一下,你这个编译通不过。
要这样才行:
int (**f)() = new (int(*)());
或者更清楚一点:
typedef int (*FPtr)();
FPtr *f = new FPtr;
【在 p*****y 的大作中提到】 : 请问,如果我创立一个函数指针,可以放在堆上吗?例如 : int (*f)() = new int(*f) () : ? : 如果不能,我写一个函数,返回函数指针,如何操作防止指针悬挂 ?例如 : int(*)() f() ?
|
z*y 发帖数: 1311 | 4
sure, something like this?
typedef int (*MyFuncType)();
MyFuncType *f = new MyFuncType;
【在 p*****y 的大作中提到】 : 请问,如果我创立一个函数指针,可以放在堆上吗?例如 : int (*f)() = new int(*f) () : ? : 如果不能,我写一个函数,返回函数指针,如何操作防止指针悬挂 ?例如 : int(*)() f() ?
|