[备考练习]C++对象和对象指针
来源:互联网 发布:scara机械手编程手册 编辑:程序博客网 时间:2024/05/22 09:02
#include <stdio.h>#include <stdlib.h>class apple {private: char* pName; //类里面含有指针 public: apple() { printf("helloworld!\n"); pName = NULL; pName = (char* )malloc(100*sizeof(char)); } ~apple() { if(NULL != pName) { printf("helloworld!2\n"); free(pName); pName = NULL;//即使赋值为NULL,也不能阻止出现被释放两次 } } }; void process(apple* b) { apple* a; a = b; printf("abOK!\n"); apple *c,d;//只有一个实例,且申明一个对象指针,指针没有调用构造函数和析构函数,而实例类变变量则会调用析构函数 *c = d; printf("cdOK!\n"); apple *e,*f; e = f; //将e的地址覆盖为f的地址,不是实体变量,没事 printf("efOK!\n"); //apple *g, *h; //*g = *h;//意图引用空指针,段错误 //printf("i,k Now!\n"); //apple i, j; //i = j; //用实体j初始化i, 使用了浅复制,导致 i分配给pName地址丢失了,无法重新释放回收 apple k; k = *b; //用valrind检测存在内存泄露!!! printf("kOK!\n");}int main(){ apple b; process(&b); return 0;}
0 0