malloc
只需要1 size_t
的說法。 更改此:
*namesFiles = (char**)malloc(*namesFiles, 10 * sizeof(char*));
這樣:
*namesFiles = (char**)malloc(10 * sizeof(char*));
讓我知道可能發生的任何其他錯誤的。
此外,如果您需要將指針傳遞給調用者,爲什麼不通過傳遞指針的地址作爲參數來返回它?
像這樣: char** CheckFilesInFolder(char* pathOfFolder);
,並在功能上做一些事情,如:
char** namesFiles = (char**)malloc(10 * sizeof(char*));
//(...)
return namesFiles;
打電話,只是這樣做: char** namesFiles = CheckFilesInFolder("Debug");
我相信這是最好的辦法。
EDIT 1.0 要回復從「烷」的評論,在這裏是通過爭論,而不是我的(簡單)的建議,解決這一問題的指針的char *的數組來返回字符的方式**:
調用該函數是這樣的:
char** namesFiles;
CheckFilesInFolder("Debug", &namesFiles);
在函數內部:
*namesFiles = (char**)malloc(10 * sizeof(char*));
int i;
for (i = 0; i < 10; i++)
(*namesFiles)[i] = (char*)malloc(MAX_FILE_NAME);
函數聲明:
void CheckFilesInFolder(char* pathOfFolder, char*** namesFiles);
使用這是你真的需要做到這一點使用的參數,例如,如果你想調用這個函數的並行線程的程序。
[請參閱此討論,爲什麼不在'C'中投射'malloc()'和家族的返回值。](http://stackoverflow.com/q/605845/2173917)。 –
你需要'(* namesFiles)[i]'。 –
你得到了什麼錯誤? –