C++指针的新需求

原创 2008年09月29日 00:15:00
 

指针使用中的根本问题:
1. 内存泄漏;
2. 野指针(指针指向已经被无效的内存上);
尤其是当多个指针指向同一个内存区域的时候, 哪个指针来负责析构, 是最头疼的事情了.
针对这种情况, 应该先引出指针的所有权问题:
指针指向的内存谁来释放, 谁就是拥有所有权.

分三类情况:
1. 一个指针有清晰的所有权;
2. 几个指针共有所有权;
3. 一些指针只有引用权;

共享所有权指针的需求:
ViSharePtr m_sp1 = new ViObj;
m_sp2 = m_sp1;
m_sp1 = NULL;//! 因为有其他人享有这个所有权, 所以不能执行析构
m_sp2;//! 还是有效的
m_sp2 = NULL;//! 执行析构
实现方式: 引用计数器

引用型指针
ViOwnPtr m_op = new ViObj;//! 所有权指针
ViRefPtr m_rp = m_op;//! 引用指针
delete m_op;
assert(m_rp == NULL);//! 对象析构之后, 所有引用指针置空;
实现方式: 引用列表

Tip:
指针命名:
 1. _rp_ 引用指针
 2. _op_ 所有权指针
 3. _sp_ 共享指针

引用型指针的使用范围:
 回调对象;
 消息对象;
 持有指针状态判断;

[Author: Yisa 意帅]

C/C++ 指针做参数 堆内存分配

1、指针参数分配堆内存问题 void GetMemory(char *p,int num) { p = new char[num]; } int _tmain(int argc, _TCHA...
  • peng825223208
  • peng825223208
  • 2015年08月25日 21:27
  • 740

c/c++中指针的理解(初学者)

关于指针,大家肯定不陌生,一些初学者,想必会出现思绪混乱的情况,现在我就来帮大家缕一缕吧。(第一次写微博 有点小紧张) 大家应该了解一些计算机对内存的管理方式吧。操作系统会将内存单元进行编号,这些...
  • Allen_ww
  • Allen_ww
  • 2016年01月11日 19:41
  • 9603

【基础知识】C/C++动态开辟空间

记得自己去面试某公司的时候曾被问过C/C++d
  • zhenweiyu
  • zhenweiyu
  • 2014年06月19日 00:14
  • 677

c++中指针问题一个很好的例子

偶尔在问题区看到这个问题,感觉有助于对指针问题理解,所以记录一下,希望给看到的你一些帮助。...
  • guwuchangtian
  • guwuchangtian
  • 2017年06月03日 11:52
  • 670

C++指针的理解

我们知道,在计算机内存中可以通过变量名称作为标识符访问变量。这种方法,程序不需要关心数据在内存的物理地址;无论何时涉及变量时,它简单地使用标示符。 对于C++程序,计算机的内存就像一系列内存单元的组...
  • shenwanjiang111
  • shenwanjiang111
  • 2016年11月12日 18:41
  • 561

Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题

C++的局部对象的概念: 作用域在局部范围内(例如函数)的对象。这样的对象可以把对象的引用或者指针存在栈中,随着函数的结束而销毁,而把创建的对象内容存在堆中。如果需要在堆上创建对象,要么使用new运算...
  • Firehotest
  • Firehotest
  • 2016年07月27日 14:08
  • 1068

c++的三种指针

1.指向常量的指针 指针所指的对象是常量,指针本身是常量。#include using namespace std; void main() { int stop; cons...
  • snicolashe
  • snicolashe
  • 2015年06月28日 10:24
  • 1289

C++指针应用

int main() {   char str1[] = "hello world";   char str2[] = "hello world";   char* str3[] = ...
  • sinat_29844779
  • sinat_29844779
  • 2017年02月22日 18:57
  • 246

C++指针长度size

1.说明:如果操作系统是32位,则指针是按32位寻址的,一个字节8位,所以得出其长度为32/8=42.代码void TestPointSize(char cArray[]){ cout int iAr...
  • yhm_js
  • yhm_js
  • 2011年01月14日 22:40
  • 6009

深度长文教你彻底掌握C++/C指针

一.基础C++或者C里面最容易让人糊涂应该是指针了,不管是初学者甚至是有经验的童鞋有时候在用指针的时候也会出现一些很隐蔽的错误. 指针本身就是一个很绕的概念,而指针又能够和很多的结构比如数组(二维数...
  • xierhacker
  • xierhacker
  • 2016年09月13日 19:49
  • 8450
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++指针的新需求
举报原因:
原因补充:

(最多只允许输入30个字)