簡體   English   中英

C ++將FILE *作為參數傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM