gpt4 book ai didi

c++ - Windows 线程创建期间的内存管理

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:58 24 4
gpt4 key购买 nike

我需要一个与 Windows 线程 (WEC7) 相关的说明。考虑以下示例代码。我想知道代码中是否有任何内存泄漏。

在代码片段中,MyThread1 在堆中创建内存并传递给 MyThread2,分配的内存在那里被清除。

DWORD WINAPI MyThread2(LPVOID lpVoid)
{
int* b = (int*)lpVoid;
int c = *b;
free(lpVoid);
return 0;
}


DWORD WINAPI MyThread1(LPVOID lpVoid)
{
int count =100;
while(count)
{
int* a = NULL;
a= (int*)malloc(sizeof(int));
*a = count;
CloseHandle(CreateThread(NULL, 0, MyThread2,(LPVOID)a, 0, NULL));
count --;
}
return 0;
}
int main()
{


CreateThread(NULL, 0, MyThread1,NULL, 0, NULL);
// wait here until MyThread1 exits.

return 0;
}

最佳答案

如果 MyThread1() 中的 CreateThread() 未能创建新线程,则您显示的代码将会泄漏。您没有检查该条件,因此 MyThread1() 可以释放它分配的内存。除此之外,由于您在一个线程中分配内存并在另一个线程中释放它,因此请确保您使用的是编译器 RTL 的多线程版本。

关于c++ - Windows 线程创建期间的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22628511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com