void *memcpy(void *dest, const void *src, size_t n);
由src指向位址為起始位址的連續n個位元組的資料複製到以dest指向位址為起始位址的空間內。
memcpy(dest,0,5);
真正應該使用的是
memset(dest,0,5);
關於memset: memset()函式把從開始位址為dest,長度為n的記憶體區域內的每個位元組都設定為c的值,注意c是個單位元組的字元。
**對於變數
struct sample_strcut sttest;
一般情況下,清空sttest的方法:
sttest.csname[0]='\0';
sttest.iseq=0;
sttest.itype=0;
用memset就非常方便:
memset(&sttest,0,sizeof(struct sample_struct));
如果是陣列:
struct sample_struct test[10];
則memset(test,0,sizeof(struct sample_struct)*10);
另外:如果結構體中有陣列的話還是需要對陣列單獨進行初始化處理的。
由框架中乙個BUG引起的
今天加班在給new guys做培訓的時候,發生了乙個莫名其妙的問題,幾經周折,才發現是公司現有框架的乙個bug。xml converter valueobject objectid lib class com.icsc.tm.mscdao.tmjcs03vo type unique converte...
乙個由有符號下標引起的bug
先看段 if s d i 這裡的d是乙個char 的記憶體buffer,s是乙個256長度的bool陣列。上段 邏輯是,s已進行過初始化,其作用是過濾位元組,有些位元組對應true,有些位元組對應false。明顯,d i 有256種可能。上面的邏輯正確麼?上面的 其實就是我專案裡的一段 看似沒有問題...
處理系統中乙個併發引起的bug
之前系統在更新某條業務資料的狀態時,並沒有判斷該資料的原來的狀態,直接更新成了最新狀態。這樣如果有多執行緒來訪問 會出現由於併發導致出現髒資料。idname status1測試 1當某個業務請求過來後,我們會把訂單資料的status更新成2,表示訂單完成,然後進行後續業務動作,產生一些正常的業務資料...