摘要:
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。我们先看一看mallo... 阅读全文
摘要:
指向指针的指针Void fun(Type** pType, int &count){ pType = (Type*)malloc(sizeof(Type)*count); for(int I = 0; I < count; i++) { //把pType指向的指针向后移动i个,获取该指针后,将这个值指向的值赋值为i *(*pType+i) = i; }}使用指针时要仔细推敲一下,到底是声明、定义还是赋值,是取地址还是解引用,就可以知道怎么写,或者发现语法问题。 阅读全文
摘要:
原始程序在文件中定义这样一个变量CTree* pTree = NULL; 全局变量pTree->InitCTree();……后来在别的文件中要用到pTree,所以在声明前面加了个extern关键字程序运行到初始化pTree时出错了。原来,extern的作用是告诉编译器pTree这个变量已经在别的文件中说明,但是不分配内存。所以第一次使用时一定要给它申请一定的空间。CTree* pTree = newCTree;这一句 的作用就是申请一段内存空间了。 阅读全文