banner

用指针时如何避免内存问题?

11.1 在堆中创建对象

tips

对C++程序员来说,最强大的功能之一是可使用指针直接操作计算机内存。

就像可以创建指向int的指针一样,也可创建指向任何对象的指针。定义了类型Cat后,便可声明一个指向这种对象的指针,并在堆中实例化一个Cat对象,就像在栈中实例化一样。其语法与在堆中分配int相同:

这将调用默认构造函数——不接受任何参数的构造函数。每当在堆或栈中创建对象时,都将调用构造函数。

11.2 删除对象

对指向堆中对象的指针调用delete时,将调用对象的构造函数,然后释放内存。这,这幅《美丽公主》—— 卢多维科大公心爱的女儿、加莱亚佐·圣塞韦里诺的年轻新娘,比安卡·斯福尔扎(Bianca Sforza)——所展现的历史背景、内在含义及创新技法已经揭晓,这意味着这幅杰作注定要在著名的《达·芬奇手稿》中占据重要的一席之地。

马汀·坎普(Martin Kemp)

P160-P161图

《美丽公主》局部

《最后的晚餐》

The Last Supper

1495—1498年,米兰,圣玛利亚感恩教堂

右页图 – 达·芬奇,《使徒犹大习作》,1495年前后。微红纸张,红粉 笔 画,18×15cm。 英 国温莎,

情况。这个过程就是我们所说的“训练”。

吴恩达在谷歌工作的时候,领导团队训练出了著名的计算机识猫系统。

如果用老式的符号式人工智能方法来编程,那么人类首先要对猫进行细致的定义,如尖

耳朵、圆眼睛、直胡须、四条腿、长尾巴……把这些特征定义转化为函数输入计算机,然后

向计算机展示一张图片。电脑就会分解图片中不同的元素,然后再将这些元素和程序中的规

则进行比对。符合尖耳朵、圆眼睛、直胡须、四条腿、长尾巴等特征,那么这就是一只猫。

而机器学习的方法大相径庭,科学家不会预先编写猫的定义,而是让计算机自己去寻

找。科学家只是把图片大量“喂”给计算机,让计算