QQ网名大全

c runtime函数库为每个线程配置一块新的内存

很高兴回答你这个问题!在C程序中,每次调用一个函数,系统必须分配内存来保存这些参数的值、局部变量以及函数的返回地址(返回调用这函数的地方),函数退出后带着代着返回值按照返回地址返回到调用点,然后系统回收这些内存。如果在函数中再调用其它函数会发生什么呢?答案是继续分配内存以保存上面提到的东西,而且必须不能破坏先前保存的东西,否则函数就不能返回了,如此下去,这些存在内存的东西就成为一个程序的执行历史(单线程程序),这些历史就像你去森林里玩一样,你的脚印就是你来这里玩的历史,通过它你可以按原路回家,不至于迷路。在多线程环境下,每个线程都要执行不同的函数,就会有不同的历史,所以每个线程都要分配属于自己的内存空间,不能与其它线程共享,这种每个线程单独使用的内存空间叫做堆栈,是用来保存函数参数、反回值、局部变量的,也就是记录线程执行历史。每个线程都可以访问其它线程的堆栈,这就有可能产生问题,比如:一个线程破坏了其它线程的堆栈。上面说的分配的内存都来自同一个进程地址空间的内存,操作系统是不会分配别的进程的内存给线程的。可能说得不大明白、准确。阁下可以参考操作系统方面的书。
佚名
2024-06-09 09:04:09
最佳回答
类似问题(10)
  • 佚名
    2024-06-09 23:39:22

    C语言函数的

    double fun( int n ) { float y = 0; int i; for( i=1; ...

  • 佚名
    2024-06-09 20:22:40

    C语言函数

    要求:不使用判断、跳转、循环;按照这个要求的话楼上两位兄弟的不符合,我尝试了一下方法需要用到头文件#include <cstdlib> int fun(i...

  • 佚名
    2024-06-09 03:28:37

    设计一个C语言函数

    可以使用2个指针,分别指向开头和结尾,头指针指向偶数,尾指针指向奇数,然后交换。直到2个指针挨着。程序如下:#include<stdio.h>void s...

  • 佚名
    2024-06-09 12:51:59

    c语言 函数一个问题

    当然有,虽然你是static变量在函数结束后不会释放,但是你没有返回值你主函数的s = fun()这句话就没有意义,因为s得不到任何值,而且这个函数应该必须提供...

  • 佚名
    2024-06-09 09:54:13

    c语言函数

    1l绝对错了 2l我借鉴了一下你的code 不过既然人家要函数调用那就写函数的吧 double f(double n){ return ((int)n %2 ...

  • 佚名
    2024-06-09 10:29:00

    c语言 函数

    要了解较完整的C语言的标准库函数,建议看看《C语言核心技术》这本书,里面详细地介绍了ANSI C和ISO C的标准库函数。但是像改注册表这样的函数是不属于C语言...

  • 佚名
    2024-06-09 09:40:59

    编写一个多线程的C程序 分割数据并分发给每个线程

    不如贴英文原版要求,中文翻译出来的要求看着不是很明白

  • 佚名
    2024-06-09 15:19:24

    如何设置我的电脑C[PU的线程数

    线程数无法修改的,这个在CPU设计出来的时候已经固定下来了。超线程是英特尔所研发的一种技术,于2002年发布。超线程的英文是HT技术,全名为Hyper-Thre...

  • 佚名
    2024-06-09 08:00:00

    如何从Excel 中调用C/C++写的动态链接库函数

    Excel 中调用C/C++写的动态链接库函数就是把dll文件导入到引用选择后确定就行了。

  • 佚名
    2024-06-09 08:00:00

    高分悬赏c或c++编程题,关于布尔函数的

    页面会自动刷新,这不是很好吗?我们已经习惯了。 30秒刷新,代码会自动刷新。订单,我们纪念确认,而不是警察。 您要使用的程序来实现这一功能,程序简单,或者说W...