开发平台(Platform): (Ex: Win10, Linux, ...)
windows 10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
visual studio community 20xx
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
NA
问题(Question):
手边有一个前辈开发的MFC的程式,
不确定开发时期的IDE环境是什么
到我手上的时候利用vs community 20xx可以正常开启.
也可以编译
但是有引用到一个函数,
里面有一行函数执行到,就会出问题.
跳error
若在vs的debug环境下按下f5可以继续执行
但是如果把程式release建立后直接copy用到的dll和exe
执行到这程式就会error,然后程式自动关闭.
跳error的点在该函式的最后一行的 } 这边,
但是只要不跳出程式,就不影响结果.
因为程式不能copy出来
而且mvc我也不是那么懂,只是略会使用而已.
只能用印象写
以下是大略的程式
有8组文字框,
分别叫做var_input[8]
里面许可的文字是hex,
char var_a[8]={0}
sscanf_s(var_input[0],"%2X",&var_a[0]);
我印象中大概是这样的写法.
可能会有一些小错误,
不过大概的程式内容就是
把8个文字框var_input输入的hex值copy到var_a的阵列中
有一个重点,
这边的var_a的最后一个值 " 不是\0 "
(因为是hex编码,整组不需要是完整的字符)
后续另外有别的函式会把整串var_a做处理.
只要我把sscanf_s这行注解,
mfc就可以正常执行,
但是如果只要sscanf_s这行执行到
就会跳错误
run time check failure stack around the variable var_a was corrupted
程式码本身逻辑没什么问题,
有问题的应该是函数使用的方法,或是ide的设定需要调整.
有用vs的中断点去看变量,
var_input[0]如果是写13
那么var_a[0]就填入hex是13的那个文字,(不一定能正确显示)
8个文字框都可以正常存入hex或执行.
但是却有额外的错误
目前有找了几个方法,
ex:把字串加大,变成var_a[9]
并在var_a[8]写入\0
这个目前看起来没有用.
project->配置属性->代码生成....(等等
我在visual community 的ide中找不到这设置..
这应该是不同ide的作法.
不知道各位先进有没有什么想法可以提供,
不管是避免,或是改善的作法都可以提点一二
谢谢