首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++字符指针有关问题

2013-03-19 
C++字符指针问题char* strcat(char* dst, const char* src) {char* cp dstwhile (*cp)cp++// 找到dst

C++字符指针问题


char* strcat(char* dst, const char* src) {
char* cp = dst;
while (*cp)
cp++;// 找到dst的末尾
while (*cp++ = *src++);// 将src拷贝到dst的末尾
return dst;
}

这是strcat函数的源码,我的疑惑在于它没有另外申请一块更大的内存空间,它这样做是安全的吗?cp指针到达dst的末尾后,继续自加(cp++)那么应该到达未定义的内存区域才对,这样不是很危险吗?
求大神指导! 谢谢。 c++ 指针
[解决办法]
是的,在追加过程中,并不会检测内存空间容量和内容,因此在复制过程中存在安全隐患,有可能会改写字符串后的一些重要数据。故这个安全问题需要调用该函数者自己处理,比如多申请足够多的空间,使其能够保存追加后的字符串。 
[解决办法]
1, do one thing and do it well! 单一指责, strcat只管追加。
2, 由使用者保证有足够大的空间(契约式编程)
[解决办法]
的确很危险,但是不是有另外一个strncat()以及其他衍生版本
[解决办法]
想安全请改用strncat或strcat_s函数。
[解决办法]
都是已经淘汰的方法了,编译的时候都会出现警告,不如干脆就不去理他,
直接用strncat
[解决办法]
呵呵,自己负责安全工作,类似还有strcpy等非安全函数。
[解决办法]
是的,不安全,所以要自己负责(不越界)。

[解决办法]
str的很多操作函数,都是程序员负责越界问题的

热点排行