一个SIGILL问题的解决

C++程序运行时遇到SIGILL信号,无效的花费了一天的时间不得解决,后来才发现问题的所在,请看问题段的代码:

 

string ConnectStr1;

string ConnectStr2;

 

char LogDirectory[256];

memset(LogDirectory,0,256);

snprintf(LogDirectory,256,
                        "%s/%s",
                        ConnectStr1.c_str[],
                        ConnectStr2 );

运行程序时提示在memset(LogDirectory,0,256);的时候产生了SIGILL信号,一般该信号表示越界分配内存等信息,问题就出在拼接LogDirectory的snprintf函数,因为ConnectStr2是string类型的,但是又没有转换成c风格字符串,所以在该处越界了!

 

总结一下:

 编译时必须把所有的warning都给fix掉,因为仅仅编译通过,而留有warning,在运行时可能会产生上述的SIGILL等其他错。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值