【C++基础之十三】指向指针的指针

原创 2013年09月24日 17:31:30

话说这玩意真不好理解,一般也不会用到,不过还是拿出来看看,叔到用时方恨嫂啊!

我们从一个例子来看它。


1.一个常见的错误

这个错误在第三篇局部变量的返回里就有讲过了。详见http://blog.csdn.net/jackystudio/article/details/11523353

因为系统会自动拷贝一个char* p,然后给p分配空间,调用结束后p指向的空间产生内存泄漏。而test从头到尾都指向NULL(0x00000000),对它进行赋值只会引起内存不能为read的错误。

void mallocMemory1(char* p, int num)
{
	p=new char[num];//分配空间
}

int _tmain(int argc, _TCHAR* argv[])
{
	char* test=NULL;
	mallocMemory1(test,100);
	strcpy(test,"HelloJacky");//赋值
	return 0;
}



2.利用返回值传递动态内存

不过这样做要注意不能返回指向栈的局部变量,栈内存在函数接收后会被回收。

char* mallocMemory2(int num)
{
	char* p=new char[num];//分配空间
	return p;//返回指针
}

int _tmain(int argc, _TCHAR* argv[])
{
	char* test=NULL;
	test=mallocMemory2(100);//给test赋值
	strcpy(test,"HelloJacky");//赋值
	return 0;
}



3.利用指向指针的指针

传入的是指针的地址,也就是一个“指向指针的指针”的内容。

void mallocMemory3(char** p, int num)
{
	*p=new char[num];
}

int _tmain(int argc, _TCHAR* argv[])
{
	char* test=NULL;
	mallocMemory3(&test,100);//传入指针的地址
	strcpy(test,"HelloJacky");//赋值
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

OpenCv学习笔记(二)—cv::Mat学习

由于在写上一篇图像的数据结构时,发现自己只知道CvMat,竟然还有Mat数据结构,真是无知了,看了这么多程序,貌似没有看到这个结构。有可能那些程序都是些老版本的例子,这是在2.0以后加上的,所以我也得...
  • Augusdi
  • Augusdi
  • 2013年05月02日 16:18
  • 45608

基于opencv的单张图像去雾算法(一)

最近对图像去雾算法产生了兴趣,查阅学习了大量论文和大牛博客后,决定动手用自己熟悉的opencv来编写程序完成。文章专门记录了具体算法实现过程以及其中遇见的大量问题。供自己以后参考,当然也希望能给广大博...

c++指针的基础讲解

  • 2014年03月25日 11:18
  • 814KB
  • 下载

我的C++指针面向对象基础

  • 2009年09月02日 22:52
  • 1.3MB
  • 下载

C++基础教程(六)——指针(1)

//===================================================== // Name : Pointer1.cpp // Author ...
  • lfdfhl
  • lfdfhl
  • 2014年04月20日 21:53
  • 1398

c++指针基础

  • 2011年11月02日 21:39
  • 17KB
  • 下载

[c++基础] 智能指针

设计原理:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。 auto_ptr   则C++会把m_exa...

C++基础---函数指针

1. 函数指针 1.1 函数指针的定义 函数指针:指向函数的指针变量,本质是一个指针变量。 函数指针有两个用途:调用函数和做函数的参数。 函数指针声明方法:返回值类型 ( * 指针变量名)(形参列...
  • cainv89
  • cainv89
  • 2015年09月04日 17:08
  • 284

C++语法基础--类(class)--类型别名,this指针,初始化式,友元的一些注意细节

注:“一些注意细节”是相对于我自己来说的(闲着无事,把入门书关于类的章节看了一遍,发现这些内容以前还真没注意到)。类的简要回顾,在C++语法基础--类已经概况了。 1.使用类型别名来简化类 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C++基础之十三】指向指针的指针
举报原因:
原因补充:

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