我正在尝试理解这是什么意思,我正在查看的代码具有
在.h中
typedef void (*MCB)();
static MCB m_process;在.C中
MCB Modes::m_process = NULL;有时当我这样做的时候
m_process();我得到了分段错误,这可能是因为内存被释放了,当它被释放时,我如何调试?
我希望我的问题是清楚的。
发布于 2010-10-21 05:33:04
它定义了一个指向函数的指针类型。函数返回C++,而参数列表是未指定的,因为问题(当前,但可能是错误的)被标记为C;如果它被标记为C++,则函数将根本不带参数。要使它成为一个不带参数的函数(在C中),您可以使用:
typedef void (*MCB)(void);这是C语言和C++之间存在重大区别的领域之一,C语言还没有要求所有函数在定义或使用之前都要进行原型设计,而C++则是如此。
发布于 2010-10-21 05:31:39
它引入了一个函数指针类型,指向一个不返回任何内容(void)的函数,不接受任何参数,并将新类型命名为MCB。
发布于 2010-10-21 05:33:18
typedef将MCB定义为指向不带参数的函数的指针类型,并返回void。
注意,MCB Modes::m_process = NULL;是C++,而不是C。而且,在C中,类型定义实际上应该是typedef void (*MCB)(void);。
我不知道你说的“内存被释放”是什么意思。你有一个指向函数的静态指针;函数不能被释放。至多,您的指针已在某处重置。只需在m_process上使用内存手表进行调试即可。
https://stackoverflow.com/questions/3982470
复制相似问题