由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++函数指针能在堆上吗?
相关主题
出个题考考大家:)请问一个关于 cost of pointer的问题
请问可以这样定义struct吗?简单的c code问题
BigEndian和LittleEndian的设计琢磨了一下c++ smart pointer,发现不能到处用
问一个函数指针的问题,c++Please Help, dynamic memory after fork()
求助,如何才能将一个c++对象封装成一个函数指针。内存管理的问题
关于C++中const的问题一个C语言的面试题,有点乱,麻烦看一下
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)why do we still use dynamic allocation?
关于传递函数指针c的函数指针能不能弄得像matlab的function handle一样?
相关话题的讨论汇总
话题: 函数指针话题: int话题: myfunctype话题: 堆上话题: c++
进入Programming版参与讨论
1 (共1页)
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() ?

1 (共1页)
进入Programming版参与讨论
相关主题
有什么编辑器查看函数指针比较给力?求助,如何才能将一个c++对象封装成一个函数指针。
不如各位高手挑个专题讲讲C++11吧关于C++中const的问题
还是成员函数指针,试试这个诡异的东东吧。在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)
a c++ question关于传递函数指针
出个题考考大家:)请问一个关于 cost of pointer的问题
请问可以这样定义struct吗?简单的c code问题
BigEndian和LittleEndian的设计琢磨了一下c++ smart pointer,发现不能到处用
问一个函数指针的问题,c++Please Help, dynamic memory after fork()
相关话题的讨论汇总
话题: 函数指针话题: int话题: myfunctype话题: 堆上话题: c++