strcpy()函数和memcpy()函数都没有处理内存覆盖问题,甚至于有些公司都禁止使用它们。其实对它们加上对覆盖问题的处理也很简单。
首先来分析一下什么情况下发生覆盖
例:char s1[] = "abcde";char s2[] = "123";
这时它们在栈中的存储顺序为:
1 | 2 | 3 | \0 | a | b | c | d | e | \0 |
a | b | c | d | e | \0 | c | d | e | \0 |
strcpy()函数和memcpy()函数都没有处理内存覆盖问题,甚至于有些公司都禁止使用它们。其实对它们加上对覆盖问题的处理也很简单。
首先来分析一下什么情况下发生覆盖
例:char s1[] = "abcde";char s2[] = "123";
这时它们在栈中的存储顺序为:
1 | 2 | 3 | \0 | a | b | c | d | e | \0 |
a | b | c | d | e | \0 | c | d | e | \0 |