4 description: new与malloc动态内存分配的使用方法
10 <div class="page-header">
11 <h3>一、malloc/free</h3>
13 <pre class="prettyprint">
15 void setName(const char * name)
17 free(mName); // free用于释放malloc申请的内存空间,同时记住释放后应该把指针置NULL防止出现“野指针”。
18 mName = (char*) malloc(sizeof(name) + 1);
28 <div class="page-header">
31 <pre class="prettyprint">
35 void setName(const char * name)
37 delete[] mName; // delete用于释放new申请的内存空间,同时记住释放后应该把指针置NULL防止出现“野指针”。
38 mName = new char[strlen(name) + 1 + 8]; // abcdefg为8个字符长度
42 strcat(mName, "abcdefg"); // 往后面添加
45 // 最后释放内存应该使用 delete[] mName;因为时候使用了 new type[size];
51 <div class="page-header">
52 <h3>三、sizeof/strlen</h3>
54 <pre class="prettyprint">
55 char strs[] = "abcdefg";
57 sizeof(strs); // 输出8,sizeof能够计算出数组占用的内存容量,最后还有"\0"。
58 // 但有一点,数组作参数传递时会自动退化成指针,所以容量应该是sizeof(char) = 4。
60 strlen(strs); // 输出7,strlen能够计算出字符,仅限于字符的长度,并不包括"\0"。
61 // 作strlen的参数时会自动退化为char*指针。