当前位置: 首页 > news >正文

翻译网站平台建设微商客源人脉app下载

翻译网站平台建设,微商客源人脉app下载,网站策划书哪个容易做,线下推广活动有哪些有如下一段代码#xff0c;意图把“zhongxiaoming字符串赋值进以p为首地址的空间为15字节的内存空间#xff0c;然后释放p所指向的内存#xff0c;以免出现内存泄露。 该代码出现几个问题#xff0c;涉及到内存的赋值、malloc函数以及free函数的用法#xff0c;以及…  有如下一段代码意图把“zhongxiaoming字符串赋值进以p为首地址的空间为15字节的内存空间然后释放p所指向的内存以免出现内存泄露。 该代码出现几个问题涉及到内存的赋值、malloc函数以及free函数的用法以及字符串的相关知识。  1 #include stdio.h   2 #include stdlib.h   3    4 int main()   5 {   6         char *p (char*)malloc(15);   7         int i0;   8         pzhongxiaoming;   9         for(;i15;i)  10         {         11                 printf(p[%d]:%c\t,i,*(pi));  12         }  13         printf(\n);  14         free(p);  15         pNULL;  16         printf(ok\n);  17         return 0; 18 } 编译运行后 Love-Yan:pointertest MD101$ make gcc -o malloctest malloctest.c -g Love-Yan:pointertest MD101$ ./malloctest p[0]:z p[1]:h p[2]:o p[3]:n p[4]:g p[5]:x p[6]:i p[7]:a p[8]:o p[9]:m p[10]:i p[11]:np[12]:g p[13]:p[14]:p malloctest(3232) malloc: *** error for object 0x107a45f4e: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug Abort trap: 6 可知道pointer being freed was not allocated。意思是意图释放的指针p没有被分配这是什么意思呢明明malloc了15字节的空间怎么说没有被分配呢 原来   malloc 8         pzhongxiaoming; 这行语句打乱了所有的计划导致分配出来的15字节空间丢失了内存泄露掉了。  6         char *p (char*)malloc(15);这时候的p才是15字节的真正主人。 按照本意我们采用strcpy就可以把“zhongxiaoming”拷贝进p指向的内存。不过要记得加进string.h头文件哦。具体代码 strcpy(p,zhongxiaoming);这样p对应的连续15个内存地址就依次被赋值了当然只是赋值了strlen“zhongxiaoming”1个字节后面的应该保持不变因为malloc分配出来的空间不会对内存进行初始化而new操作符分配出来的会初始化。 字符串、内存静态区 第八行代码把在静态区创建的字符串常量“zhongxiaoming”的首地址赋值给了p此时指针变量p的值发生了变化不再是指向15个字节的首地址了。 此时可以通过p对字符串常量进行读的操作无写操作字符常量不允许修改通常在静态区的内容很多都是字符常量、整形常量等等譬如int a12doule b123.123123; 这里的12和123.123123都是放在静态区的他们都有个地址这些常量与a、b对应读a也就是读a对应的12.可是如果再有对a 的重新赋值则常量区的12将会在某个时刻被系统回收掉可以肯定的是程序结束后肯定被释放掉了呵呵。。。重新赋值a如a12312则又在静态区创建12312与a对应以此类推。在此特别引申一点 指针对应的字符串的访问还可以通过poiner[i]操作符进行访问。当然在这里是想把“zhongxiaoming”全部读出来。而p又指向其对应的地址其实用“zhongxiaoming”可得到其地址故我们可以通过p[i]进行访问当然了不能写哦常量嘛静态区嘛。。。那我们就这样完成了对常量区字符串“zhongxiaoming”的读操作啦。当然这是没有修改过的源代码的功能。 free 按照没有修改过的源代码直接就freep也太夸张了吧把p也就是“zhongxiaoming”对应的内存释放这是要逆天了想去释放静态区的内存。。嘿嘿这可是系统自己的事最好还是别干预了。所以系统报错。。。说malloctest(2617) malloc: *** error for object 0x107b27f48: pointer being freed was not allocated。也就是说这不是你分配的内存这段内存不归你管。。。 修改代码 而加入strcpy的新代码要对p对应的内容进行访问也就是有【】操作符或者*(pi)了千万别写成pi哦这样子可是会挎了15个字节访问了哦。。。我们把代码修改下 #include stdio.h   2 #include stdlib.h   3 #include string.h   4 int main()   5 {   6         char *p (char*)malloc(15);   7         int i0;   8         memset(p,A,15);   9         for(;i15;i)  10         {                11                  printf(p[%d]:%c\t,i,p[i]);  12         }  13         printf(\n\n);  14           15         strcpy(p,zhongxiaoming);  16         for(i0;i15;i)  17         {         18                 printf(p[%d]:%c\t,i,p[i]);  19         }  20         printf(\n);  21         free(p);  22         pNULL;  23         return 0;  24 } 运行 Love-Yan:pointertest MD101$ make gcc -o malloctest malloctest.c -g Love-Yan:pointertest MD101$ ./malloctest p[0]:z p[1]:h p[2]:o p[3]:n p[4]:g p[5]:x p[6]:i p[7]:a p[8]:o p[9]:m p[10]:i p[11]:n p[12]:g p[13]: p[14]: Love-Yan:pointertest MD101$  大功告成。。。 不过在这里如果要考究下strcpy对p的15个字节处理了多少个呢我们可以先用memset来对这15个字节进行下初始化然后再输出看看就知道了。 Love-Yan:pointertest MD101$ make gcc -o malloctest malloctest.c -g Love-Yan:pointertest MD101$ ./malloctest p[0]:A p[1]:A p[2]:A p[3]:A p[4]:A p[5]:A p[6]:A p[7]:A p[8]:A p[9]:A p[10]:A p[11]:Ap[12]:A p[13]:Ap[14]:A p[0]:z p[1]:h p[2]:o p[3]:n p[4]:g p[5]:x p[6]:i p[7]:a p[8]:o p[9]:m p[10]:i p[11]:np[12]:g p[13]:p[14]:A Love-Yan:pointertest MD101$  good news。。。只是对前面的部分字节进行了赋值。可是第十四了也就是p[13]里边的内容是空的。。这是怎么回事 我们知道字符串的结尾是\0‘对吧里边会不会就是\0呢我们可以gdb一下。看看这个p[13]是什么。 果然。。。 (gdb) p p[13] $2 0 \0 (gdb)  转载于:https://www.cnblogs.com/iosDevZhong/p/4395242.html
http://www.sadfv.cn/news/383891/

相关文章:

  • 厦门网站建设及维护外贸网站 源
  • 网站做海康直播滁州网站建设联系方式
  • 服务器 空间 虚拟主机 网站需要备案吗网站开发验证码的有效性
  • 郑州网站制seo网站关键字优化
  • 网站排名掉了怎么恢复南京本地网站有哪些
  • 网做英文网站协会建设网站的目的
  • 免费 开源 企业网站如何为网站做seo体检
  • 宁波建网站可按需定制公明 网站建设
  • 怎么查网站是否被kwordpress 搜索框 404
  • 网站注销申请书wordpress双栏极简
  • 网站搭建的流程及费用是多少?建网站需要买什么
  • 河北省永清县建设局网站响应式网站导航怎么做
  • 旅行社电商网站怎么做在线网页代理pc
  • 免费网站建设 免备案orchard wordpress
  • 株洲网站设计德阳建设网站的公司
  • 查不到备案的网站潜江网站建设
  • 网站宣传流程海南网站制做的公司
  • 企业网站优化方案范本wordpress首页字符
  • 建设部网站四库一平台app开发制作定制外包26
  • 青海建设厅报名网站百度关键词搜索排名
  • 深圳网站建设定制开发超凡科技如何关闭wordpress默认编辑器
  • 移动网站建设是什么意思在线网站编辑
  • 网站设计多少钱市场价wordpress后台添加自定义输入框
  • 企业网站托管电话wordpress创建搜索页面模板
  • 东莞网站建设属于什么专业网站设计机构有哪些
  • 网站维护是什么意思wordpress用途
  • 小程序软件制作网站东莞发现无症状1例
  • 黄岐网站制作wordpress大前端模板下载
  • 网站开发网北京地区网站制作公司
  • 整形网站开发建设银行网站上交医保