此函數正在將文本文件讀入字符緩衝區並將指針返回到此緩衝區。如何在char * func()中正確刪除用新[]分配的char數組?
char * textfile_to_char(wchar_t *filename)
{
WIN32_FIND_DATA data;
if (FindFirstFile(filename,&data)==INVALID_HANDLE_VALUE)
{
wchar_t message[256];
wsprintf(message,L"File could not be found %lp",filename);
MessageBox(0,message,0,0);
return NULL;
}
else
{
HANDLE hFile=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_READONLY,0);
if (hFile==INVALID_HANDLE_VALUE)
{
wchar_t message[256];
wsprintf(message,L"Error opening file: %lp",filename);
MessageBox(0,message,0,0);
return NULL;
}
else
{
OVERLAPPED overlapped;
memset(&overlapped,0,sizeof(overlapped));
char * buffer=new char[data.nFileSizeLow];
ReadFileEx(hFile,buffer,data.nFileSizeLow,&overlapped,0);
CloseHandle(hFile);
buffer[data.nFileSizeLow]=0;
return buffer;
}
}
}
現在,這裏是一個代碼多個片而言我用這個函數從這段文字
wchar_t filename[512];
wsprintf(filename,L"%s.vtx",_shader_name);
id_vertex_shader=glCreateShader(GL_VERTEX_SHADER);
id_fragment_shader=glCreateShader(GL_FRAGMENT_SHADER);
char *shader_source=textfile_to_char(filename);
char *buffers[2]={shader_source,0};
glShaderSource(id_vertex_shader,1,buffers,0);
delete[] shader_source;
glCompileShader(id_vertex_shader);
源OpenGL着色和刪除[] shader_source其實挺讓我困惑,因爲)它不」 t工作,b)刪除shader_source也不起作用。讓我怎麼刪除它感謝
'緩衝液[data.nFileSizeLow] = 0;'寫入超出緩衝區。 – AlexD 2014-11-01 00:25:05