锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++平台框架库和混编开源 / __acrt_FlsGetValue函数行fls_get_value崩溃

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
量化预测
股票离线分析软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

__acrt_FlsGetValue函数行fls_get_value崩溃


软件关闭时出崩溃问题,定位到下面的第8行fls_get_value行:

extern "C" PVOID WINAPI __acrt_FlsGetValue(DWORD const fls_index)
{
#if FLS_ALWAYS_AVAILABLE
    return FlsGetValue(fls_index);
#else
    if (auto const fls_get_value = try_get_FlsGetValue())
    {
        return fls_get_value(fls_index);
    }

    return TlsGetValue(fls_index);
#endif
}

这函数在winapi_thunks.cpp里,FlsGetValue是获取存储信息,纤程相关的。这函数的上级调用函数也看不到,所以觉得奇怪。因为软件一直正常,所以很奇怪,还想着是操作系统有问题,VS编译有问题,把机器杀毒,VS的一些插件也卸载了,处理下环境问题。后来从环境角度转到代码角度,耐心查了查问题解决了。

memset越界造成,同时让对象属性成员值突然变化,因为越界写入,写到了对象内存范围里,所以对象释放内存时就出崩溃问题。memset的最后长度参数不要写死,要用内存实际长度sizeof,这样能避免越界问题。

具体哪行的memset,并不好找,如果大家遇到相同的问题,请找锐英源软件。

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近