c++ 指针和引用传递
来源:互联网 发布:linux查看python版本 编辑:程序博客网 时间:2024/05/16 19:56
别人的程序core了,segv_maperr。查了一下是内存释放的有问题。就如同下面的代码
#include <stdio.h>#include <stdlib.h>void FreeMsgBuffer( char* msg){if (NULL != msg){free(msg);msg = NULL;}}int main(void){char *pszTmp;pszTmp = NULL;pszTmp = (char *)malloc(sizeof(char) * 10);strcpy(pszTmp, "leman");printf("name: %s\n", pszTmp);FreeMsgBuffer(pszTmp);if (pszTmp == NULL){printf("已释放\n");//其他操作}else{printf("内存内容: %s\n", pszTmp);//其他操作}return 0;}这个问题之前已经考虑过,就是向函数传递指针的时候可以通过间接访问改变指针指向的内容而不会改变实参指针本身(所以说传递指针实际上是值传递)。
问题的解决办法也很简单,传递一个引用就可以了。
void FreeMsgBuffer( char* &msg)函数是可以改变实参引用本身的,这才是真正的引用传递。
实验中发现自己对引用的理解还不够,比如下面的代码在delete处会core。我现在不能解释为什么,留给以后再学习。
int main(){vector<int> v(100,0);vector<int>&vf1=*(new vector<int>());vector<int>&vf2=v;delete &vf1; // okvf2=*(new vector<int>());delete &vf2; // corereturn 0;}
- C/C++值传递、指针传递和引用传递详解
- 指针传递和引用传递
- 指针传递和引用传递
- 指针传递和引用传递
- [C]值传递、指针传递、引用传递
- C专家编程--指针和数组(三) 值传递 指针传递 引用传递
- 值传递、指针传递和引用传递
- 值传递、指针传递和引用传递
- c语言和c++中值传递、指针传递和引用传递的比较和区别
- c语言中变量的引用传递和指针
- C++:指针传递、引用传递的区别
- 引用和指针 传递参数
- c++ 指针和引用传递
- (c/c++学习笔记九)引用传递、指针传递和值传递
- C/C++值传递,指针传递和引用传递的概念
- C++之值传递、指针传递和引用传递---补充(4)《Effective C++》
- C/C++语言参数传递----值传递、引用传递、指针传递、指针引用传递
- C/C++语言参数传递----值传递、引用传递、指针传递、指针引用传递
- Windows应用程序crash之后Dump相关信息
- C#重绘windows窗体标题栏和边框
- JOptionPane
- [Leetcode] Remove Duplicates from Sorted List
- HTML JavaScript 转义字符
- c++ 指针和引用传递
- WebLogic下WAR方式部署获取文件路径问题
- ie与火狐中常见的一些兼容问题
- 报道~
- 五分钟学会HTML5(一)
- 命令行如何远程连接MySQL数据库
- ArcGIS Terrain Dataset
- 五分钟学会HTML5!(二)
- 快速计算多项式:霍纳法则(Horner's rule)