
请教CALLBACK的问题,c++高手请进
问题1:一个CALLBACK的函数A()中,如果用到一个普通函数B(),那么,这个B()是由系统调用的,还是由用户程序调用的?voidCALLBACKA(){.........
问题 1:一个CALLBACK的函数 A()中,如果用到一个普通函数B() ,那么,这个B()是由系统调用的,还是由用户程序调用的?
void CALLBACK A()
{
.........
B();
.........
}
问题2 如果这个B()是一个类的成员函数的情况下,调用方式怎么样
问题3 在不使用回调或者函数指针的情况下,一个函数处理结束后,是否会立即被清空所占的内存空间?如果这个函数是 对象的成员函数 (类实例化一个对象后,其成员函数是否是常驻内存的?)
关键的一个问题,是类实例化为一个对象后,它的成员函数是不是常驻内存的?还是临到用时再占内存组建这个函数的空间的?
我做directx的几个小程序,由于每秒24帧刷一次,对函数是否常驻内存很关心,如果每次用前再把这个函数的实现调入内存,就等于消费了不应有的资源时间. 展开
void CALLBACK A()
{
.........
B();
.........
}
问题2 如果这个B()是一个类的成员函数的情况下,调用方式怎么样
问题3 在不使用回调或者函数指针的情况下,一个函数处理结束后,是否会立即被清空所占的内存空间?如果这个函数是 对象的成员函数 (类实例化一个对象后,其成员函数是否是常驻内存的?)
关键的一个问题,是类实例化为一个对象后,它的成员函数是不是常驻内存的?还是临到用时再占内存组建这个函数的空间的?
我做directx的几个小程序,由于每秒24帧刷一次,对函数是否常驻内存很关心,如果每次用前再把这个函数的实现调入内存,就等于消费了不应有的资源时间. 展开
1个回答
展开全部
CALLBACK只不过是MFC的一个标识符起到辅助说明通常没什么实际意义,回叫取决于设计意图与CALLBACK无关.
回叫调用首先要学习函数指针
以你的例子为例
void CALLBACK A();
定义为函数指针后应该是
void (*pFun)();
为指针赋值
pFun = &A;
在B里你需要现实的调用A,B如果要回叫,那么需要传入A指针为参数
B(&A);
接下来
void B(void (*pFun)())
{
pFun();// A被调用
}
问题3
函数都是在栈上分配内存,执行完后自动就析构了,成员函数不会常驻内存.调用才会分配内存
----------------------------------------------
实例化的方式决定了是否会常驻内存
class A
{
}
A b; //在栈上申请,栈退出就自动析构(函数退出变量就没了)
A *b = new A;//在堆上申请,客户程序自己控制是否常驻.(如果你不删除就是常驻)
类实例化后,其成员也加入内存了.析构成员也就没了.
回叫调用首先要学习函数指针
以你的例子为例
void CALLBACK A();
定义为函数指针后应该是
void (*pFun)();
为指针赋值
pFun = &A;
在B里你需要现实的调用A,B如果要回叫,那么需要传入A指针为参数
B(&A);
接下来
void B(void (*pFun)())
{
pFun();// A被调用
}
问题3
函数都是在栈上分配内存,执行完后自动就析构了,成员函数不会常驻内存.调用才会分配内存
----------------------------------------------
实例化的方式决定了是否会常驻内存
class A
{
}
A b; //在栈上申请,栈退出就自动析构(函数退出变量就没了)
A *b = new A;//在堆上申请,客户程序自己控制是否常驻.(如果你不删除就是常驻)
类实例化后,其成员也加入内存了.析构成员也就没了.
追问
我说的是已经实现了一个函数指针的回调函数 void CALLBACK A()
B()是回调函数A()的子函数,是一个_cdecl的普通调用函数,
当我用一个 C(void (*A)())调用callback的 A()时,我知道A()正常情况下是常驻在内存中的,我想知道的是回调函数void CALLBACK A()里面的这个B()是不是也是常驻在内存中的
我可以确定回调函数 正常情况下是在程序完结后 才由系统API来析构的

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询