天天看點

6、程式設計中注意幾點

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。

參考

繼續閱讀