首页 > 代码库 > linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其他g++版本未知)
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; }
linux64位系统中g++4.4.7下使用wcsncpy函数有造成段错误的BUG(其他g++版本未知)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。