1.一个指针在编译系统里占4个字节,与指向的变量无关 2.指针:其实就是一个内存地址 指针变量:就是存放内存地址的变量,也就是存放指针的变量 3.打印指针(地址类型的数据)用%p 4.避免访问未初始化的指针(野指针危险),错误示范: 局部变量在栈里面的值是随机分配的,有时系统会阻止或报错。 ...
分类:
其他好文 时间:
2017-09-25 20:42:39
阅读次数:
115
在vector中删除,大家都知道,直接erase的话,这种写法很有问题。因为erase(iter)之后iter指针就变成野指针了,此时继续iter++就会出问题。 因此vector中正确的删除的方法是: 但是在map中,正确的删除方法是: 因为对于map这种以指针构建起来的容器来说,可以保证一个元素 ...
分类:
其他好文 时间:
2017-09-22 12:08:03
阅读次数:
167
智能指针用于解决常规指针所带来的内存泄露、重复释放、野指针等内存问题。智能指针基于这样的事实得以发挥作用:定义在栈中的智能指针,当超出其作用域时,会自动调用它的析构函数,从而可以释放其关联的内存资源。 之前C++标准库中定义的智能指针std::auto_ptr<T>,因其设计存在缺陷,所以已不再推荐 ...
分类:
其他好文 时间:
2017-09-07 23:04:14
阅读次数:
223
野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。 野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。 造成野指针的 ...
分类:
编程语言 时间:
2017-08-24 13:27:10
阅读次数:
150
问题所在 1、局部指针变量没有被初始化 2、使用已经释放过后的指针 3、指针所指向的变量在指针之前被销毁 4、结构体成员指针未初始化, 没有为结构体指针分配足够的内存 ,内存越界(考虑使用柔性数组)和泄露 避免规则 1、用malloc申请了内存之后,应该立即检查指针值是否为NULL,防止使用值为N ...
分类:
编程语言 时间:
2017-08-20 12:30:20
阅读次数:
138
1.如果多个变量同时指向一个内存并且调用Delete删除了其中任意一个变量,实际上就为所有的变量销毁了这块内存。如果没有明确的把其他这些变量设置为NULL,他们此时就成为了野指针,对野指针调用delete将会产生运行错误。 2.每当使用new时,要考虑在哪里以及什么时候使用对应的delete。 3. ...
分类:
其他好文 时间:
2017-08-07 15:55:16
阅读次数:
204
C语言大总结 一。C语言基本常识 1、语言由函数组成 2、main是程序入口 3、C语言中不能出现中文或中文字符 (凝视和字符串除外) keyword : C语言提供表示特殊含义的单词 特点 : 1、 所有小写 2、在Xcode中是紫褐色 标识符 : 程序猿自己在代码中为某些东西起的名字 规则 : ...
分类:
编程语言 时间:
2017-08-05 21:12:35
阅读次数:
199
分析下列程序,输出结果:不确定,未定义行为。 指针释放存储空间后没有置为NULL,变成野指针。 分析:野指针,不能通过简单的NULL进行判断,delete或free只是释放了指针所指向的内存区域,并没有干掉指针本身,所以指针指向的是“垃圾”指针,所以free或者delete之后要把指针置为NULL。 ...
分类:
其他好文 时间:
2017-08-01 23:13:28
阅读次数:
149
程序片段(01):main.c 内容概要:PointWithOutInit #include <stdio.h> #include <stdlib.h> //01.野指针具体解释: // 1.野指针:没有进行初始化操作的指针-->由于该指针变量内部所存储的地址是个随机值,因此是野地址(类型含义:指针 ...
分类:
其他好文 时间:
2017-07-29 16:41:31
阅读次数:
197
//最近,有朋友开玩笑问 int *p *是指针还是p是指针还是*p是指针,当然了,知道的都知道p是指针 //野指针 >>>指没有指向一个地址的指针(指针指向地址请参考上一篇文章) //空指针 >>指向空(null)的指针就是空指针 //指针的其他用法,指针可以指向指针,指针可以进行+ - * /运 ...
分类:
编程语言 时间:
2017-07-28 23:55:29
阅读次数:
225