From 4df87fa2478aadb1c89bc105bd6ece12b2e3e305 Mon Sep 17 00:00:00 2001 From: Ter <895350975@qq.com> Date: Tue, 11 Feb 2020 12:04:33 +0000 Subject: [PATCH] =?UTF-8?q?update=20=20=E7=BB=83=E4=B9=A012.17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch12/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ch12/README.md b/ch12/README.md index 312dbac..110e076 100644 --- a/ch12/README.md +++ b/ch12/README.md @@ -141,13 +141,14 @@ typedef unique_ptr IntP; (e) IntP p4(new int(2048)); (f) IntP p5(p2.get()); ``` - +注:“合法”意味着编译可以通过,但不代表不会产生错误! * (a) 不合法。在定义一个 unique_ptr 时,需要将其绑定到一个new 返回的指针上。 -* (b) 合法。但是可能会有后续的程序错误。当 p1 被释放时,p1 所指向的对象也被释放,所以导致 pi 成为一个空悬指针。 + 编译时报错: invalid conversion from 'int' to 'std::unique_ptr::pointer { aka int* }' [-fpermissive] +* (b) 合法。但是可能会有后续的程序错误。当 p1 被释放时,其实际所指向的对象 —— ix 也会被释放,但是 ix 并非通过 new 创建,所以此时操作系统会报错。 * (c) 合法。但是也可能会使得 pi2 成为空悬指针。 -* (d) 不合法。当 p3 被销毁时,它试图释放一个栈空间的对象。 +* (d) 合法。但是当 p3 被销毁时,它试图释放一个栈空间的对象。 * (e) 合法。 -* (f) 不合法。p5 和 p2 指向同一个对象,当 p5 和 p2 被销毁时,会使得同一个指针被释放两次。 +* (f) 合法。但是p5 和 p2 指向同一个对象,当 p5 和 p2 被销毁时,会使得同一个指针被释放两次。 ## 练习12.18