c sizeof()导致溢出?

时间:2017-04-07 08:49:57

标签: c pointers sizeof

var welcomeTour = localStorage.getItem("welscreen");
if(welcomeTour === undefined || welcomeTour === null) {
   localStorage.setItem("welscreen", "0");
   welcomeTour = "0";
}

请看这个,当输入23个字符以内的一些字符时,没关系,输入超过23个字符时,如图像显示,我的结果显示乱码,为什么会这样? enter image description here

1 个答案:

答案 0 :(得分:3)

当您对指针执行sizeof时,您将获得指针的大小而不是指向它的内存。这通常是4或8,具体取决于您使用的是32位还是64位系统。

然后strlen返回字符串的长度,而不是空终止符。

strcpy调用超出范围时,这两个大小都很小,可以用终结符保存完整的字符串,从而导致未定义的行为