当前位置: 首页 > 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.yutouwan.com/news/383891/

相关文章:

  • 网站空间和数据库空间弹性盒子做自适应网站
  • 网站开发工资低内蒙古建设工程造价信息网官网信息价
  • 重庆如何软件网站推广湖南seo优化公司
  • 手机网站设计只选亿企邦做办公用品网站资料怎么收集
  • 贵州网站制作设计公司免费建立com网站
  • 深圳网站建设大概多少钱机器配件做外贸上什么网站
  • 文化传播公司网站备案wordpress user密码
  • 北京市网站备案查询模板下载免费网站
  • 网站建站网站域名申请电子商务网站建设作业文档
  • 滁州房地产网站建设网站wordpress查看文章模板
  • wordpress建站需要写代码吗二次网站开发
  • 中国装饰公司营销型网站建设准备php和易语言混编做网站
  • 知名网站建设定制论坛上怎么做网站优化
  • 网站是用什么程序做的湖南做网站 x磐石网络
  • 哪家建网站百度搜索seo优化技巧
  • hqz行情站wordpress如何更新临时域名
  • 做的网站百度搜不到沙田镇做网站
  • 石家庄网站设计建设seo新方法
  • 帮客户做网站内容建设银行网站不能登录不了
  • php 手机网站 模板在拼多多开网店的流程
  • 江苏太仓建设局网站wordpress标签云
  • 菏泽网站建设价位河北省住建厅电子证书查询
  • 宁波网站建设哪里好湛江网站制作
  • 网站的建设周期与阶段网站与网页的区别
  • 彩票网站建设应该要注意哪些wordpress多语言企业网站
  • 佛山市网站建设公司如何用ps做网站首页图片
  • 做网赌网站需要多少钱承德的网站建设公司
  • 有哪些做的比较好的网站装修房子的效果图 三室二厅二卫
  • nodejs做网站容易被攻击吗如何备份网站 整站
  • 延边网站建设网页制作免费教程