[英]C++ Pass FILE * as argument to a function
我想將FILE *傳遞給另一個函數。 在此功能中,使用fread從文件中讀取了一些字節。 不執行任何寫入。
我想知道我是否應該說
void DoSomething(FILE *uFile)
要么
void DoSomething(const FILE *uFile)
我害怕在某處引入內存泄漏,並認為const可能更安全。 我擔心該函數可能會創建文件的副本,或者當我不正確地傳遞它時會如此。
我像這樣創建FILE *:
FILE *outfile = fopen("c:\\myfile.dat", "wb");
謝謝。
無論您將FILE*
傳遞給fwhatever
函數,最終都會調用fread
/ fscanf
/ fwhatever
某種變體。 如果您看,所有這些功能都帶有一個(非常量) FILE*
。
您需要准備好為這些功能提供所需的功能。 如果將它們原型化為采用非const參數,並且嘗試為它們提供const參數,則會收到編譯器警告。
因此,我將傳入非常量FILE*
當您將指針傳遞給該對象作為參數時,C ++永遠不會復制該對象 。 const並不是要發表有關復制的聲明,而是要發表有關修改的聲明。 因此,您不必擔心泄漏。 正如其他人指出的那樣,所有使用FILE*
的函數都將其帶為非常量,因此無論如何您只需要將其拋棄即可。
您可以選擇:
void DoSomething(const FILE *uFile)
沒有創建該文件的重復項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.