在windows,2022版visual studio上,使用 默认(ISO C++14 标准)、默认(ISO C++14 标准) 的C/C++语言。
大概率是以下代码的问题
// 定义函数指针类型
typedef void (*Func)(Unit*);
//定义画图函数指针数组;
extern Func _drawFunc[100] = { NULL };
Func drawFuncP;
drawFuncP = _drawFunc[unit->type.shape]; // 获取画图函数指针
drawFuncP(unit); // 调用画图函数
unit->type.str = (wchar_t*)malloc(sizeof(str));
在某一次运行到这一行时
unit->type.str = (wchar_t*)malloc(sizeof(str));
位于_drawFunc[1]的函数指针突然变化
原本内容由 0x00007ff6fa8f100a 突然变成 0x000002502a727e60
造成执行以下代码时出现访问冲突,
drawFuncP = _drawFunc[unit->type.shape]; // 获取画图函数指针
drawFuncP(unit); // 调用画图函数
编译器报错:
0x000002502A727E60 处(位于 旅游信息管理系统.exe 中)引发的异常: 0xC0000005: 执行位置 0x000002502A727E60 时发生访问冲突。
unit->type.str的类型是wchar_t*
_drawFunc[1]的类型是void(*) (unit*),
实在想象不出有什么关联
请问这个情况的原因是什么?该怎么解决呢?