1、給string賦char*型值,通過以下方式:
構造函數
string ( const char * s, size_t n );
string ( const char * s ); //要求s指向的C風格的字元串必須以'\0'結尾。
或用assign:
string& assign ( const char* s, size_t n );
string& assign ( const char* s ); //同樣,以'\0'結尾
或用:
operator=
string& operator= ( const char* s ); //同樣,s要以'\0'結尾。
2、配置設定記憶體,要記得初始化;定義變量,也要初始化,否則将來可能遇到未知的結果。初始化配置設定的記憶體是一個好習慣。
char c[112];
memset(c, 0, 112);
char *c1 = malloc(sizeof(char) * 4);
memset(c1, 0, sizeof(char) * 4);
int a = 1;
string.clear();
3、malloc() 函數和calloc()函數的主要差別是前者不能初始化所配置設定的記憶體空間,而後者能。calloc()函數會将所配置設定的記憶體空間中的每一位都初始化為零。malloc() 函數和calloc()函數的另一點差別是calloc()函數會傳回一個由某種對象組成的數組,但malloc()函數隻傳回一個對象。為了明确是為一個數組配置設定記憶體空間,有些程式員會選用calloc()函數。
4、如果發送給浏覽器的資料的html格式有誤,浏覽器是不會解析的。是以,當發現通過socket連接配接浏覽器,發送資料後,浏覽器沒有反應,不一定是線程問題,可能是資料格式問題。
5、gcc和g++編譯函數的結果是不同的(函數編譯後的改寫命名方式不同)。是以,在一項工程中,最好統一大家的編譯方式。
6、編譯提示reference to main,可能是makefile沒有寫對,找不到.o檔案。
7、打開的檔案描述符一定要記得關閉,配置設定的記憶體,一定記得釋放。
8、cgi的輸出,放在body中。ajax不寫localhost,port,不能跨域查詢。
9、chmod[2]
r(4),w(2),x(1),-(0)
有時候,一個程序調用另一個程序執行,你會發現沒有反應,可有可能是調用程序沒有執行另一個程序的權限,要開啟一下s。
set-user-ID(SUID) 啟用這個權限,則該可執行檔案可以以擁有者的權限來運作。S,s。
10、做除法運算,一定要檢查除數是否為0。
參考