本文介绍了默认堆或私有堆?我应该使用哪一个?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我尝试在线程中分配一些内存块,我应该使用默认堆还是私有堆?这有关系吗? 以下是样本 #include< stdio.h> #include< windows.h> DWORD AccessSharedResource(LPVOID par); #define THREADCOUNT 10 int main() { HANDLE hThread [THREADCOUNT]; DWORD lpThreadId; for(int i = 0; i< THREADCOUNT; i ++) { hThread [i] = CreateThread( NULL,// secuirty flag 0,/ / default stack size (LPTHREAD_START_ROUTINE)AccessSharedResource,(LPVOID)i,//传递给函数的参数AccessSharedResource 0,//立即启动函数(AccessSharedResource)& ; lpThreadId //线程标识符); if(hThread [i] == NULL) { printf("创建线程失败,错误代码=%d",GetLastError()); 返回1; } } WaitForMultipleObjects(THREADCOUNT,hThread,true,INFINITE); 返回0; } DWORD AccessSharedResource(LPVOID par) { DWORD i =(DWORD)par; HANDLE hHeap = GetProcessHeap (); // HANDLE hHeap = HeapCreate (0,0,0); LPTSTR pszStr =(LPTSTR)HeapAlloc(hHeap,0,10); 。 。 。 。 返回0; } 解决方案 I try to allocate some memory block in threads, should I use Default heap or Private heap? Does it matter?Here is the sample#include<stdio.h>#include<windows.h>DWORD AccessSharedResource(LPVOID par);#define THREADCOUNT 10int main(){HANDLE hThread[THREADCOUNT];DWORD lpThreadId;for(int i=0;i<THREADCOUNT;i++){hThread[i]=CreateThread(NULL,//secuirty flag0,//default stack size(LPTHREAD_START_ROUTINE)AccessSharedResource,(LPVOID)i,//the parameter passed to function AccessSharedResource0,//start the function (AccessSharedResource) immediately&lpThreadId // thread Identifier);if(hThread[i]==NULL){printf("Failed to create Thread, errorcode=%d",GetLastError());return 1;}}WaitForMultipleObjects(THREADCOUNT,hThread,true,INFINITE);return 0;}DWORD AccessSharedResource(LPVOID par){DWORD i=(DWORD)par;HANDLE hHeap=GetProcessHeap();//HANDLE hHeap=HeapCreate(0,0,0);LPTSTR pszStr=(LPTSTR)HeapAlloc(hHeap,0,10);....return 0;} 解决方案 这篇关于默认堆或私有堆?我应该使用哪一个?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!