大神帮忙看看为什么这段代码炸掉了我的内存
text* txtinit(void) { HANDLE handle = CreateFile("H:\\dota.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); HANDLE hheap = HeapCreate(NULL,0,0); char *p;DWORD size;DWORD s; size = GetFileSize(handle,NULL); p = (char *)HeapAlloc(hheap,NULL,size); DWORD i = 0; for(i=0;i<size&&p[i]!=EOF;i++) ReadFile(handle,p+i,1,&s,NULL); HANDLE textheap = HeapCreate(NULL,0,0); HANDLE charheap = HeapCreate(NULL,0,0); text *head = (text *)HeapAlloc(textheap,HEAP_ZERO_MEMORY,sizeof(text)); DWORD j=0,cc=0; text *temp = (text *)HeapAlloc(textheap,HEAP_ZERO_MEMORY,sizeof(text)); head->next = temp; for(i=0;p[i]!=EOF;i++) {for(;p[i]==''\n''&&p[i+1]!=''\n'';) {temp->data = (char*)HeapAlloc(charheap,HEAP_ZERO_MEMORY,i-j+1); for(DWORD c=0;c<(i-j);c++) {cc = j; temp->data[c] = p[cc+1]; cc++;} temp->data[cc+1] = ''\0''; text *tail = (text *)HeapAlloc(textheap,HEAP_ZERO_MEMORY,sizeof(text)); temp->next = tail; tail->prev = temp; temp = tail;} } temp->next = head; head->prev = temp; HeapFree(hheap,NULL,p); HeapDestroy(hheap); return head; } 运行后奇卡无比,看占用内存一直在变大,查了下程序只有可能是这段代码在炸,有加分
更多