摘要: 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,但是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围... 阅读全文
posted @ 2014-01-03 11:17 pxiong 阅读(196) 评论(0) 推荐(0) 编辑
摘要: malloc/free是c/c++标准库函数,new/delete是c++运算符。new/delete可以被重载。 对于内置数据类型的对象而言,光用malloc/free完全满足动态对象的要求,此时malloc/free和new/delete完全等价。 但对于其他对象在创建后要自动执行构造函数,在销毁前要自动执行析构函数,于是运算符new/delete可以产生了,不要企图用malloc/free完成动态内存的管理。 malloc只关心分配内存的大小,不关注类型,调用free(p)后,p不会自动赋值为NULL,连续两次非NULL指针调动两次free()会导致程序运行出错。new内置了s... 阅读全文
posted @ 2014-01-03 10:20 pxiong 阅读(146) 评论(0) 推荐(0) 编辑