used to test scoped_ptr
diff --git a/test1.cpp b/test1.cpp
index 8b13789..f2b607c 100644
--- a/test1.cpp
+++ b/test1.cpp
@@ -1 +1,43 @@
+// scoped_ptr 是boost中最简单的智能指针。scoped_ptr的目的也是很简单， 当一个指针离开其作用域时候，释放相关资源。特别注意的一定就是scoped_ptr 不能共享指针的所有权也不能转移所有权。也就是说这个内存地址就只能给的声明的变量用，不能给其他使用。

+// 下面是scoped_ptr的几个特点：
+
+// scoped_ptr的效率和空间的消耗内置的指针差不多。
+
+// scoped_ptr不能用在标准库的容器上。(用shared_ptr代替)
+
+// scoped_ptr 不能指向一块能够动态增长的内存区域(用scoped_array代替)
+
+
+#include <cstdio>
+#include <boost/scoped_ptr.hpp>
+
+using boost::scoped_ptr;
+
+class TEST1 {
+public:
+    TEST1() {
+        fprintf(stdout, "Construct\n");
+    }
+    ~TEST1() {
+        fprintf(stdout, "Destroy\n");
+    }
+    void print(void) {
+        fprintf(stdout, "test1 print now\n");
+    }
+};
+
+void test1(void);
+
+int main(int argc, char *argv[])
+{
+    fprintf(stdout, "Before test1...\n");
+    test1();
+    fprintf(stdout, "After test1...\n");
+    return 0;
+}
+
+void test1(void) {
+    scoped_ptr<TEST1> x(new TEST1);
+    x->print();
+}
learn and test shared_ptr
diff --git a/global.hpp b/global.hpp
index b6fa4de..d849d86 100644
--- a/global.hpp
+++ b/global.hpp
@@ -1,7 +1,19 @@
 #ifndef GLOBAL_HPP
 #define GLOBAL_HPP

+#include <cstdio>

-
+class TEST1 {
+public:
+    TEST1() {
+        fprintf(stdout, "Construct\n");
+    }
+    ~TEST1() {
+        fprintf(stdout, "Destroy\n");
+    }
+    void print(void) {
+        fprintf(stdout, "test1 print now\n");
+    }
+};

 #endif
diff --git a/test1.cpp b/test1.cpp
index f2b607c..1730038 100644
--- a/test1.cpp
+++ b/test1.cpp
@@ -8,25 +8,11 @@

 // scoped_ptr 不能指向一块能够动态增长的内存区域(用scoped_array代替)

-
-#include <cstdio>
 #include <boost/scoped_ptr.hpp>
+#include "./global.hpp"

 using boost::scoped_ptr;

-class TEST1 {
-public:
-    TEST1() {
-        fprintf(stdout, "Construct\n");
-    }
-    ~TEST1() {
-        fprintf(stdout, "Destroy\n");
-    }
-    void print(void) {
-        fprintf(stdout, "test1 print now\n");
-    }
-};
-
 void test1(void);

 int main(int argc, char *argv[])
diff --git a/test2.cpp b/test2.cpp
index 340f3af..6eaeeb9 100644
--- a/test2.cpp
+++ b/test2.cpp
@@ -10,11 +10,17 @@

 #include <cstdio>
 #include <boost/shared_ptr.hpp>
+#include "./global.hpp"

-using std::shared_ptr
+using boost::shared_ptr;

 int main(int argc, char *argv[])
 {
+    shared_ptr<TEST1> ptr_1(new TEST1);
+    ptr_1->print();
+    shared_ptr<TEST1> ptr_2 = ptr_1;
+    ptr_2->print();
+    ptr_1->print();

     return 0;
 }
diff --git a/test_weak_ptr.cpp b/test_weak_ptr.cpp
index 8b13789..7613f6c 100644
--- a/test_weak_ptr.cpp
+++ b/test_weak_ptr.cpp
@@ -1 +1,22 @@
+// weak_ptr 就是一个弱指针。weak_ptr 被shared_ptr控制， 它可以通过share_ptr的构造函数或者lock成员函数转化为share_ptr。

+// weak_ptr的一个最大特点就是它共享一个share_ptr的内存，但是无论是构造还是析构一个weak_ptr 都不会影响引用计数器。
+
+#include "./global.hpp"
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+using boost::shared_ptr;
+using boost::weak_ptr;
+
+int main(int argc, char* argv[]) {
+    shared_ptr<TEST1> sharePtr(new TEST1);
+    weak_ptr<TEST1> weakPtr(sharePtr);
+    if (sharePtr)
+        sharePtr->print();
+    shared_ptr<TEST1> sharePtr_2 = weakPtr.lock();
+    if (sharePtr_2)
+        sharePtr_2->print();
+
+    return 0;
+}
diff --git a/test_shared_or_scoped_array.cpp b/test_shared_or_scoped_array.cpp
index e69de29..3ee719b 100644
--- a/test_shared_or_scoped_array.cpp
+++ b/test_shared_or_scoped_array.cpp
@@ -0,0 +1,15 @@
+#include "./global.hpp"
+#include <boost/shared_array.hpp>
+
+using boost::shared_array;
+
+int main(int argc, char *argv[])
+{
+    const int size = 10;
+    shared_array<TEST1> a(new TEST1[size]);
+    for (int i = 0; i < size; ++i) {
+        a[i].print();
+    }
+    return 0;
+}
+
diff --git a/README.md b/README.md
index b710fee..f7b9990 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,17 @@
-boost_scoped_ptr
+boost_smart_ptr
 ================

-learn and test boost::scoped_ptr
+learn and test boost_smart_ptr
+
+下面是几个使用智能指针需要注意的地方：
+
+1.声明一个智能指针的时候要立即给它实例化， 而且一定不能手动释放它。…_ptr<T> 不是T* 类型。所以：
+
+a: 声明的时候要…_ptr<T> 而不是….._ptr<T*>
+
+b：不能把T* 型的指针赋值给它
+
+c: 不能写ptr=NULl, 而用ptr.reset()代替。
+
+  不能循环引用。
+不要声明临时的share_ptr， 然后把这个指针传递给一个函数