请教编译方面的问题!

mygo 2001-04-11 03:55:00
各位大侠,下面的用法会产生什么问题吗?谢谢!

class Class_A{
void Call_1(void);
}
Class_A::Clall_1(){
char * p = (char*)Class_B::MemNew(100);//类成员函数是否可以这么用,
Class_C::MemFree(p);//我从来没有这样没有实例话就使用,谢谢

}
//////////////////////////////////////////////////////
class Class_B{
void* MemNew(UINT nSize);
}
void* B::MemNew(UINT nSize){
//分配内存.......
}
/////////////////////////////////////////////////////
class Class_C{
int MemFree(void* p);
}
int Class_C::MemFree(void* p){
//释放void* p.......
}
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mygo 2001-04-11
  • 打赏
  • 举报
回复
to zzh(), 请教,由于此静态成员函数负责分配内存,会产生什么后果,我在单独试验的时候,boundschecker检查没有任何问题,但是在放到一个需要经常分配内存的dll中用时,内存产生泄漏了,可是我检查其分配的空间都用其释放成员函数释放了。。。。。。
这是为何?谢谢!
zzh 2001-04-11
  • 打赏
  • 举报
回复
静态函数中不能这样使用,因为静态函数是全局的,
In355Hz 2001-04-11
  • 打赏
  • 举报
回复
对,就是这样的,只是在static函数中不能使用this指针,也不能直接调用类的非静态成员。
mygo 2001-04-11
  • 打赏
  • 举报
回复
如成员函数是static,是不是这个类所有的实例共用一个成员函数?此成员函数在编译时就分配好了?谢谢
horris 2001-04-11
  • 打赏
  • 举报
回复
没问题
mygo 2001-04-11
  • 打赏
  • 举报
回复
对不起,我刚才输入有一些错误,Class_B和Class_C中的成员函数为static, 修改如下:
//////////////////////////////////////////////////////
class Class_B{
static void* MemNew(UINT nSize);
}
void* B::MemNew(UINT nSize){
//分配内存.......
}
/////////////////////////////////////////////////////
class Class_C{
static int MemFree(void* p);
}
int Class_C::MemFree(void* p){
//释放void* p.......
}
mygo 2001-04-11
  • 打赏
  • 举报
回复
???

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧