當我在一個線程里調用malloc時,這個函數所用的堆是歸線程所有還是歸進程所有?

Rayking 2003-04-16 08:56:38
當我在一個線程里調用malloc時,這個函數所用的堆是歸線程所有還是歸進程所有?我的意思是,如果我在這個線程里非法操作破壞了堆的結構,會不會影響到其它的線程呢?
...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rayking 2003-04-16
  • 打赏
  • 举报
回复
内存泄漏和堆結構被破壞應該不是一個概念吧
  • 打赏
  • 举报
回复
对于WINDOWS来说,每个进程有4GB的空间,所以进程内的线程使用的是该进程的内存空间,而WIN32的堆是属于进程的,也就是说所有属于该进程的线程将共享同一堆空间。
如果想保护数据不受影响,那就应该不使用WIN32的缺省堆,而应该在进程的内存空间中创建自己的堆HeapGreate()
台风双头蛇 2003-04-16
  • 打赏
  • 举报
回复
主要看你把堆破坏成为什么样子了,一般情况来讲,如果你出现了很多地内存泄漏(非常严重),会影响到所在进程的堆内存分配等等诸多问题,同时也会间接的影响到其他进程,因为你的进程中的公共操作,例如IO处理等等。。。。
nKannan 2003-04-16
  • 打赏
  • 举报
回复
这个堆应该是所有线程都可以访问的,所以会的。
Rayking 2003-04-16
  • 打赏
  • 举报
回复
繼續
ckacka 2003-04-16
  • 打赏
  • 举报
回复
而且堆只有一个
ckacka 2003-04-16
  • 打赏
  • 举报
回复
一个进程内的多个线程对于数据是处于共享状态的

你在CreateThread的时候,你的线程函数还不是一样的可以访问其他的外面的数据
eric_uugames 2003-04-16
  • 打赏
  • 举报
回复
堆,即开辟的一块内存空间,应该说它既不属于进程也不属于线程。

如果不同的进程、线程都操作这个堆,是会破坏这个结构的。
hello_wyq 2003-04-16
  • 打赏
  • 举报
回复
不会的,现在的os都是保护模式。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧