【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;
}

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

相关文章推荐

c++指针的基础讲解

  • 2014-03-25 11:18
  • 814KB
  • 下载

C++基础---指针与堆

1. 指针与堆 1.1 指针的三大用途 处理堆中存放的大型数据; 快速访问类的成员数据和函数; 以别名的方式向函数传递参数; 注:指针可以通过内存地址直接访问数据,可避免在程序中复制大量代码,因...

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

  • 2009-09-02 22:52
  • 1.30MB
  • 下载

c++指针基础

  • 2011-11-02 21:39
  • 17KB
  • 下载

C++基础学习系列第一部分——数组和指针

C++ 语言提供了两种类似于 vector 和迭代器类型的低级复合类型——数组和指针。与 vector 类型相似,数组也可以保存某种类型的一组对象;而它们的区别在于,数组的长度是固定的。数组一经创建,...

C/C++指针基础

  • 2008-05-26 23:28
  • 1.69MB
  • 下载

[c++基础] 智能指针

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

C++基础之字符串与指针

一、字符串 1、字符串默认用字符数组来存储。 2、strlen求字符串长度是不包括\0的 3、 char a[]={“Hello World!”};或 char a[]=”Hello Worl...

C02-程序设计基础提高班(C++)第7周上机任务-指针

第7周:阅读教材第6章(p164-200),主要内容是指针,完成第7周上机任务;(回到C02-程序设计基础提高班(C++)学习安排)实践内容:1. (数组的排序) 按模板中的要求,用指向数组的指针变量...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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