Trend科技的一道面試題:請看下面的程式,說說會出現什麼問題?#include <iostream>#include <cstdlib>#include <vector> using namespace std; class CDemo { public: CDemo():str(NULL){}; ~CDemo() { if(str) delete[] str; }
很多人聽說過標準auto_ptr智能指標機制,但並不是每個人都天天使用它。這真是個遺憾,因為auto_ptr優雅地解決了C++設計和編碼中常見的問題,正確地使用它可以產生健壯的代碼。本文闡述了如何正確運用auto_ptr來讓你的代碼更加安全——以及如何避免對auto_ptr危險但常見的誤用,這些誤用會引發間斷性發作、難以診斷的bug。1.為什麼稱它為“自動”指標?auto_ptr只是眾多可能的智能指標之一。許多商業庫提供了更複雜的智能指標,用途廣泛而令人驚異,從管理引用的數量到提供先進的代理服務
多態時最好將基類的解構函式設為virtual,這樣在析構時會先調用子類的解構函式,再調用基類的解構函式,否則如果delete的是基類的指標,則只調用基類的解構函式.樣本如下:#include <iostream.h> class Base { public: Base() { mPtr = new int; } virtual ~Base() { delete mPtr; cout<<"~Base::Base()"<<endl;}
1、外殼 新機外殼接合緊湊,縫隙處平整光滑,無毛刺。 翻新機器一般採用仿原裝外殼, 縫隙處不平整,有毛刺, 手機外殼上下兩部分容易出現閉合不緊、留有很大縫隙的現象。鑒別時可以用小手指指甲嘗試著插進手機上下蓋的接縫。如果能插進去,就是翻新機。而對外殼表面像新機一樣磨砂,且有小顆粒的手機,更是萬萬不可購買。這種機子外殼的漆是JS噴上去的,時間一長,漆就會脫落(機殼上的灰塵小顆粒,是噴漆時沒有真空環境作業造成的) 2、氣味
#include <iostream>#include <string> using namespace std; class A{}; class B: public A{}; void F( B& b){ cout<< "F( B& b)"<< endl;}void F( A& a){ cout<< "F( A& a)"<< endl; } int _tmain(int
1.進程和線程的差別。 線程是指進程內的一個執行單元,也是進程內的可調度實體. 與進程的區別: (1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位 (2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行 (3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源. (4)系統開銷:在建立或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消線程時的開銷。
JS 數組去重JS 數組去重javascript2010-08-03 20:31:31 閱讀345評論0 字型大小:大中小 訂閱js數組去重就是把數組中重複的元素去掉:Array.prototype.delRepeat=function(){ var newArray=new Array(); var len=this.length; for (var i=0;i<len ;i++){ for(var j=i+1;j<len;j++){
BOOL SaveBmp(HBITMAP hBitmap, CString FileName) { HDC hDC; //當前解析度下每象素所佔位元組數 int iBits; //位元影像中每象素所佔位元組數 WORD wBitCount; //定義調色盤大小,位元影像中像素位元組大小,位元影像檔案大小,寫入檔案位元組數 DWORD dwPaletteSize=0, dwBmBitsSize=0, dwDIBSize=0, dwWritten=0;
這幾天在研究Todolist源碼,看到一簡短的類,很很有意思,現把源碼列下,並附上簡短說明: // macro to help prevent re-entrancy in functions//定義一個宏AF_NOREENTRANT,防止函數中可重新進入#define AF_NOREENTRANT / static BOOL bAFInHere = FALSE; / if (bAFInHere) / return; /CAutoFlag af(bAFInHere, TRUE);class
osg::ref_ptr< osg::Node> model;NodeVisitor vv( TRAVERSE_ALL_CHILDREN); model->accept( vv);假設model的模型結構則model->accept( vv);多態,相當於調用Group::accept(NodeVisitor)。注意,我開始誤認為Group沒有對accept()進行重寫,但後來在遍曆Geode結點時,發現Geode類的定義中有一個META_Node(osg,
在Android的原始碼中,經常會看到形如:sp<xxx>、wp<xxx>這樣的類型定義,這其實是Android中的智能指標。智能指標是C++中的一個概念,通過基於引用計數的方法,解決對象的自動釋放的問題。在C++編程中,有兩個很讓人頭痛的問題:一是忘記釋放動態申請的對象從而造成記憶體泄露;二是對象在一個地方釋放後,又在別的地方被使用,從而引起記憶體訪問錯誤。程式員往往需要花費很大精力進行精心設計,以避免這些問題的出現。在使用智能指標後,動態申請的記憶體將會被自動釋放(有
全卸載Oracle方法:軟體環境: 1、Windows XP + Oracle 10g 2、Oracle安裝路徑為:d:\Oracle1、如果資料庫配置了自動儲存管理(ASM),應該先刪除聚集同步服務CSS(cluster Synchronization Services).刪除CSS服務的方法是在DOS命令列中執行如下命令: localconfig delete2、在“服務”視窗中停止Oracle的所有服務。3、在“開始”菜單中依次選擇“程式”/“Oracle-OraDb10g_home1"
1.修改SoundRecorderService.java中 public void onScanCompleted(String path, Uri uri) 將String title = simpleDateFormat.format(date);替換成: int separatorIndex = path.lastIndexOf("/"); String title= (separatorIndex < 0) ? path :
Feature phone 的production release 版本上存在(1)死機無法抓取得memory dump或是(2)用JTAG分析問題時watchdog timeout了, 可以關閉watchdog去debug 問題,關閉方法如下: 11A before關閉 watchdog方法是將WDT_Enable()這個函數中的參數變為kal_FALSE。如下Application_Initialize() (init\src\init.c) like this:#ifdef
OSG建立渲染線程的過程 圖形渲染線程是靜態函數,為:static unsignedint __stdcall StartThread(void *data)它是在int Thread::start()中被調用:int Thread::start(){pd->tid.set( (void*)_beginthreadex(NULL,pd->stackSize,ThreadPrivateActions::StartThread,static_cast<void
#include <vector> using namespace std; class CDemo{ public: CDemo():str(NULL){} ~CDemo(){if(str) delete [] str;} char *str; }; int main() { CDemo d1; d1.str = new char[32]; strcpy(d1.str, "trend micro"); vector <CDemo> *a1 = new vector
硬碟邏輯結構簡介一. 硬碟邏輯結構簡介 1. 硬碟參數釋疑 到目前為止, 人們常說的硬碟參數還是古老的 CHS(Cylinder/Head/Sector)參數. 那麼為什麼要使用這些參數,它們的意義是什麼?它們的取值範圍是什麼? 很久以前, 硬碟的容量還非常小的時候,人們採用與磁碟片類似的結構生產硬碟. 也就是硬碟碟片的每一條磁軌都具有相同的扇區數.由此產生了所謂的3D參數 (Disk Geometry). 既磁頭數(Heads), 柱面數(Cylinders),扇區數(Sectors),
心態是最大的本錢;人無完人,重要的是怎麼做人 一位哲人說:"你的心態就是你真正的主人" 一位偉人說:“要麼你去駕馭生命,要麼是生命駕馭你。你的心態決定誰是坐騎,誰是騎師”。 一位藝術家說:“你不能延長生命的長度,但你可以擴充它的寬度;你不能改變天氣,但你可以左右自己的心情;你不可以控制環境,但你可以調整自己的心態。” 佛說:物隨心轉,境由心造,煩惱皆由心生。 狄更斯說:一個健全的心態比一百種智慧更有力量。 愛默生說:一個朝著自己目標永遠前進的人,整個世界都給他
1.分析普通的helloworld程式 先書寫一下一個簡單的helloworld程式如下:/* hello.c */int main(int argc, char * argv[]){ return 0} 編譯器:gcc -o hello hello.c 等價的編譯方法:gcc -c hello.cgcc -o hello.my -nostartfiles hello.o /usr/lib/crt1.o /usr/lib/crti.o
第一招 看手機串號(IMEI) 所謂手機串號,就如同手機的身份證一樣,由於每部手機的IMEI號都是惟一的,因此一般說來可以由此來判斷一部手機是否為正品。判別方法如下:在手機的待機狀態下輸人“#06#”不包括引號 ,手機顯示的一串數字即為其主板串號,將其記下;取下手機電池,看手機機身後面的兩個標籤中的白色標籤上的串號即機殼串號,另一個標籤一般是入網許可證。是否和前面記下的數字一致;再看手機封裝盒上的IMEI號,比較三者,看是否都一致。如果主板串號和機殼串號不一致,甚至主板串號無顯示或是一串奇怪的數