c - -flto 使用 gcc 5.1.0 标记段错误
问题描述
我在 Windows 上使用 gcc 5.1.0。
调用 memset 时,我收到一个 SEGFAULT,当启用 -flto 标志(链接时间优化)时不会发生这种情况。
/*#### function.h ####*/
void secure_bzero (void *s,size_t size);
/*##### function.c ####*/
/* Securely erase size bytes from s */
void WEAK __attribute__((noinline)) secure_bzero (void *s,size_t size) {
memset(s,0,size);
}
当我想在 CodeBlocks 中调试我的应用程序时,我注意到了分段错误。我启用了调试符号标志 (-g) 并收到警告,将 -flto 与 -g 结合使用“目前处于试验阶段,预计会产生错误的结果”。
我不明白这里是如何产生分段错误的。
感谢尤金·什。提示发布一个完整的例子:
#include "function.h"
int main(){
unsigned char seed[32];
for (int i=0; i<32; i++){
seed[i] = i;
}
secure_bzero(seed,sizeof(seed));
return 1;
}
解决方案
推荐阅读
- javascript - JavaScript 快速更改 background-img 属性而没有性能问题
- java - RecyclerView scrollToPosition() 将项目放在底部。我怎样才能把它带到TOP?
- java - 如何表示一个 HashMap
- javascript - 将基于 Promise 的方法转换为回调
- vue.js - 如何使用 vue.js 将表格 html 转换为 xlsx
- mysql - 数据库和MYSQL
- python - 如何重命名所有文件以包含目录名称?
- java - 事件处理程序 onComplete 控制器不会执行 task.isSuccessful()
- python-3.x - /register/处的操作错误
- javascript - 单击按钮时,数据库将更新