美文网首页
3 指针的可靠用法

3 指针的可靠用法

作者: Savior2016 | 来源:发表于2018-08-21 11:55 被阅读26次

程序里面经常会用到char*指针来缓存数据,在这里遇到了很多莫名其妙的问题,最后摸索总结了一套指针的可靠用法。
以前都是这么用的:

char *send_data;
sprintf(send_data,"%s","test");

问题有两个,第一是只给了指针,没有指针初始化,指针是悬空的,也叫野指针,下面到指针指向的位置数据,打到哪里就看运气了,会不会出现致命的错误也要看运气了。
第二个问题,sprintf本身就不安全,因为这个函数本身是多参数的,也就是说,不管send_data是多长多大,它只管把格式化的字符串放进来,很可能会溢出的。推荐安全的用法是snprintf,增加了参数size。

正确的用法应该是这样的:

char *send_data=NULL;//初始化的时候就指向NULL,以防悬空指针导致错误
send_data=(char*)malloc(1024);//在堆中分配空间并将指针地址传给指针变量
snprintf(send_data,strlen("test"),"%s","test"); //定长输出到字符串变量(这里只是实例一下)
free(send_data);   //看到很多地方写if(send_data) free(send_data);我觉得没必要,反正NULL可以多次free也不会出问题
send_data=NULL;//重新指向NULL,除了防止出现野指针外,还能防止重复free导致复位(不能对同一区域两次free)

相关文章

  • 3 指针的可靠用法

    程序里面经常会用到char*指针来缓存数据,在这里遇到了很多莫名其妙的问题,最后摸索总结了一套指针的可靠用法。以前...

  • iOS中const的简单介绍

    简单用法 基本数据类型 const 在基本数据类型中的用法 指针类型 指针 的简单用法 const 与 指针 的结...

  • 指针

    本节学习目标 1.什么是指针 2.指针的零值 3.解引用的用法 4.不要使用指针传递数组,应该使用切片 什么是指针...

  • C++ - 类

    用法1:对象名.成员名 用法2:指针->成员名 用法3:引用名.成员名 成员函数体和类的定义分开写 类的成员函数的...

  • Const关键字理解(iOS)

    基本数据类型 const 在基本数据类型中的用法 指针类型 指针 的简单用法 const 与 指针 的结合使用 注...

  • 15.0 C++远征:常指针和常引用

    5-4常指针和常引用 1.常指针与常引用的用法: 2.const修饰紧跟其后的词: 3.注意

  • 2017-03-14 C++阶段

    Task List 1. 回顾引用用法 2. 掌握c++中 new开辟空间的用法 3. 回顾数组指针以及const...

  • this指针的用法

    概念 this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • const的高级用法

    本文主要展示constant数组、constant指针和指向constants的指针的用法。 show_array...

网友评论

      本文标题:3 指针的可靠用法

      本文链接:https://www.haomeiwen.com/subject/ilvdiftx.html