码迷,mamicode.com
首页 > 系统相关 > 详细

linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其他g++版本未知)

时间:2014-11-19 01:59:04      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:bug   64位   段错误   

一、描述

目前已经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;
}




linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其他g++版本未知)

标签:bug   64位   段错误   

原文地址:http://blog.csdn.net/kibaamor/article/details/41248027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!