linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)
一、描写叙述
眼下已经linux64位系统中g++4.4.7下发现了该bug。其它的版本号还未測试。
经測试,假设传入wcsncpy函数第一个參数(即目标缓冲区)的地址不能被4整除的话就必然会发生段错误。
经调试,函数的汇编代码中有使用到movdqa指令,该指令要求參数必须内存对齐,假设參数(目标缓存区)不是内存对齐的,就会造成段错误.
二、測试代码
#include <wchar.h> #pragma pack(1)
struct Kom
{
char c;
wchar_t s[32];
};
#pragma pack() int main(int argc, char** argv)
{
Kom kom;
const wchar_t* k = L"Kom";
wcsncpy(kom.s, k, sizeof(kom.s) / sizeof(kom.s[0])); return 0;
}
三、解决方式
sed -i -r "s/wcsncpy\((.*? ),(.*? ),(.*? )\);/swprintf(\1, \3, L\"%ls\", \2);/g" $(find . -regextype "egrep" -regex ".*(\.h$|\.cpp$)")
linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其它g++版本号未知)的更多相关文章
- <linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件>
		
1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o2.linux 系统c语言生成.so文件,----->gcc -sha ...
 - 使用.NET 4.0+ 操作64位系统中的注册表
		
一.64位系统中的注册表 以 LocalMachine 中的启动项为例: 64位应用的注册表位置还是在: SOFTWARE\Microsoft\Windows\CurrentVersion\Run 而 ...
 - 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
		
原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言: 本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE ...
 - (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
		
(win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 1.下载opencv 官网http://opencv.org/下载windows版Op ...
 - 呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。
		
其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~ 但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默 ...
 - 黄聪:Windows 64位系统中安装Android SDK“系统找不到指定的文件Java.exe”解决方法
		
明明已经在64位window7中安装好了64位版本的jdk,为什么android SDK安装程序却识别不到jdk呢?先看看报错: Java SE Development Kit (JDK) not f ...
 - 64位系统中连接Access数据库文件的一个问题
		
近日在windows 7 64位系统中编译以前写的程序,发现在连接Access数据库时总是出现异常,提示“Microsoft.Jet.OLEDB.4.0”未在本机注册,同样的代码在32位的xp系统中却 ...
 - PHP长整型在32位系统中强制转化溢出
		
CleverCode近期遇到一个PHP项目整形转化问题,mysql有一个字段id是bigint的,里面有长整型,如id = 5147486396.可是php代码因为历史原因却部署在多台机器中,当中A机 ...
 - VS2010在64位系统中连接64位Oracle出现的问题和解决方法
		
C#使用System.Data.OracleClient连接Oracle数据库.我的是window7/64位系统,装了一个64位的oralce 11G r2 客户端是64位的 用VS10调试错误信息如 ...
 
随机推荐
- leetcode add two numbers python
			
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...
 - 新视野OJ 2705 [SDOI2012]Longge的问题 (数论)
			
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2705 题解:求 sigma(gcd(i,n), 1<=i<=n<2^32) ...
 - yii2.0 控制器方法 视图表单 Form表单处理
			
假设我们在ArticleController.php下面的actionForm方法中来处理提交的表单 新建立一个 views/Article/article-form.php文件用来作为输入表单 &l ...
 - SVN创建分支
			
工具:TortoiseSVN 创建一个空白项目,例如OA 从客户端检出OA,在OA文件夹下新建三个子文件夹 trunk:存放开发的主线,团队成员在开发的时候一直要用这个库中的内容 branches:存 ...
 - 转: when.js原理和核心实现
			
这篇文章可以看作是屈屈同学关于when.js的文章<异步编程:When.js快速上手>的续篇. 屈屈的文章中详细介绍了when.js,在这里关于when.js的使用我就不多复述了,大家可以 ...
 - C++可变参数的另一种实现
			
大家熟知的C库函数printf函数就是一个可变参数函数,它是怎么实现的呢?不过他实现是有条件的,必须函数参数的入栈顺序为从右向左的顺序,也即函数的形参,在函数调用之前,必须是最右边的参数先入栈,并且参 ...
 - POJ 2758 Checking the Text(Hash+二分答案)
			
[题目链接] http://poj.org/problem?id=2758 [题目大意] 给出一个字符串,支持两个操作,在任意位置插入一个字符串,或者查询两个位置往后的最长公共前缀,注意查询的时候是原 ...
 - Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages
			
Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages Web网页中动态数据区域的识别 ...
 - CF# 260  A. Laptops
			
One day Dima and Alex had an argument about the price and quality of laptops. Dima thinks that the m ...
 - .Net MVC 入门之Razor语法
			
Razor语法 Razor是以后MVC项目中都需要用的, 所以在学MVC的基础的时候,我们的目标:要了解熟悉Razor页面的语法结构,做到灵活使用,so我们马上开始学习Razor,也请你们多评论和推荐 ...