为了账号安全,请及时绑定邮箱和手机立即绑定

静态内存分配与动态内存分配的区别

静态内存分配与动态内存分配的区别

C
繁星点点滴滴 2019-07-08 16:45:57
静态内存分配与动态内存分配的区别我想知道静态内存分配和动态内存分配有什么区别?你能用任何例子来解释这件事吗?
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

有三种类型的分配-静态的,自动的,和动态的。

静态分配意味着在程序启动时为您的变量分配内存。创建程序时,大小是固定的。它适用于全局变量、文件范围变量和static定义内部函数。

自动内存分配为函数中定义的(非静态)变量发生,通常存储在堆叠(尽管C标准没有强制要求使用堆栈)。您不必使用它们来保留额外的内存,但另一方面,对此内存的生命周期也有限的控制。在函数完成之前,函数中的自动变量才会出现。

void func() {
    int i; /* `i` only exists during `func` */}

动态内存分配有点不同。现在控制这些内存位置的确切大小和生存期。如果不释放它,就会遇到内存泄漏,这可能导致应用程序崩溃,因为在某个时候,系统无法分配更多的内存。

int* func() {
    int* mem = malloc(1024);
    return mem;}int* mem = func(); /* still accessible */

在上面的例子中,即使函数终止,分配的内存仍然是有效的和可访问的。当您完成内存,您必须释放它:

free(mem);


查看完整回答
反对 回复 2019-07-08
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

静态内存分配:

  • 变量分配

    永久

  • 分配完成

    以前

    程序执行
  • 它使用称为

    堆叠

    用于实现静态分配
  • 效率低
  • 的确有

    没有内存可重用性

动态内存分配:

  • 变量分配

    如果程序单元处于活动状态
  • 分配完成

    期间

    程序执行
  • 它使用称为

    用于实现动态分配
  • 更有效率
  • 的确有

    内存可重用性

    ..不需要时可以释放内存。


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 1321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信