C语言零碎记录之strcat【你必须知道的495个C语言问题 电子书下载】
刚才看了看 你必须知道的495个C语言问题 ,在7.3内存分配 strcat问题上
发现strcat原来是不进行自动分配内存空间的...我晕...strcat是将*s2的字符串附加到*s1上,由于是pointer,所以无法检测内存溢出问题.只能由使用者自行判断.也就是 strcat(char *s1,char *s2) s1的空间 必须 至少是 strlen(s1)+strlen(s2)+1的值.否则内存溢出.
本来我自己写了一个类似的函数,然后发现有个strcat和我写的函数效果一样,就用strcat了.但是其实我写的函数内部有空间分配的!!这个strcat没有.于是呼,我的程序必然有内存泄露或溢出之类的.
=====================================
再次鄙视 Cnblogs的 文件系统. 上传路径 居然不能有空格 太搞笑了,没见过这的,如果考虑安全还是学学chinaUnix的或其他的按照日期随机数保存文件名吧...
贴上 你必须知道的495个C语言问题 下载
我自己写个 是char * strplus(char *s1,char *s2); 具体实现稍后贴上.
2 //USAGE: strplus("aaa","bbb");//a[]="aaa";b[]="bbb";
3 //printf("strlen %d + %d\n",strlen(a),strlen(b));//3+3 no '\0'
4 //printf("sizeof %d + %d\n",sizeof(a),sizeof(b));//4+4
5
6 char * spp=malloc(strlen(a)+strlen(b)+1);
7 memcpy(spp,a,strlen(a));
8 memcpy(spp+strlen(a),b,strlen(b));
9 memset(spp+strlen(a)+strlen(b),(int)'\0',(size_t)1);
10 return spp;
11 }
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。