C语言与内存息息相关的重要概念有哪些?

一、问题

        C语⾔、C++语⾔和C#语⾔,这三门语⾔,⼀个⽐⼀个加号(+)多,C语⾔没有加号,C++有两个加号,C#有四个加号。随着语⾔的发展,⼀个⽐⼀个简单,很多问题系统都给做了,⽆需程序员考虑。

        然⽽,最基层的也是最重要的,C语⾔却在很多地⽅都需要程序员⾃⼰动⼿,如内存管理。在管理内存中,还要时刻考虑内存的泄露等问题。下⾯介绍⼀下与内存息息相关的⼏个重要概念。

二、解答

1.野指针

        从字⾯上理解,“野”字就好像是没有⼈管、⾏为粗鲁、不守规矩的意思。 野指针也是这样的,没有规矩。野指针不同于 NULL 指针,它是指向“垃圾”内存的指针。

野指针的成因可能会有如下⼏种情况:

(1)指针变量没有被初始化。指针变量在创建的同时应该被初始化,指向 NULL 指针或者指向⼀块合法的内存,否则它的指向是随机的。

(2)指针的操作超过了变量的作⽤范围。

(3)指针被释放或者删除后,没有被置为 NULL,在以后的程序中被误认为是合法的。

2. 栈 (stack)

        栈是⽤来保存局部变量,栈上的内容只在函数的范围内存在,函数运⾏结束,这些内容也会被销毁。栈的特点就是效率⾼,但空间⼤⼩有限。

3. 堆(heap)

        堆是由 malloc( ) 、 calloc( ) 等函数或者 new 操作符获得的内存,由 free( ) 函数和 delete( )  函数释放内存。若在程序中没有应⽤ free( ) 函数或者 delete( ) 函数进⾏释放操作,则内存会⼀直占⽤,直到程序结束。堆的特点是使⽤灵活,空间⽐较⼤。

4. 静态区

        静态区⽤于保存⾃动全局变量和 static 变量。静态区的内容在整个程序中都存在,由编译器在编译的时候分配内存。

三、总结

        内存的分配管理⼗分重要,管理不当就会为程序带来重⼤隐患。⼀般来说,内存可以理解为栈、堆和静态区三部分。

相关推荐

  1. C语言内存息息相关重要概念哪些

    2024-06-12 00:00:05       17 阅读
  2. 目标检测基本概念哪些

    2024-06-12 00:00:05       18 阅读
  3. C语言printf( ) 函数哪些参数?

    2024-06-12 00:00:05       15 阅读
  4. C语言运算类型哪些

    2024-06-12 00:00:05       14 阅读
  5. Kafka基础架构核心概念哪些应用场景?

    2024-06-12 00:00:05       17 阅读
  6. C语言-整数浮点数:内存存储差异

    2024-06-12 00:00:05       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 00:00:05       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 00:00:05       5 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 00:00:05       4 阅读
  4. Python语言-面向对象

    2024-06-12 00:00:05       5 阅读

热门阅读

  1. 超宽输送带的最适合的应用领域是什么

    2024-06-12 00:00:05       15 阅读
  2. 电影《禁闭岛》赏析

    2024-06-12 00:00:05       21 阅读
  3. 【LC刷题】DAY03:242 349 202 1

    2024-06-12 00:00:05       17 阅读
  4. LED灯的功率以及好的品牌推荐

    2024-06-12 00:00:05       19 阅读
  5. Web前端三大主流框架

    2024-06-12 00:00:05       14 阅读
  6. c,c++,go语言字符串的演进

    2024-06-12 00:00:05       14 阅读
  7. Web前端GIS入门:从基础到实践的全方位探索

    2024-06-12 00:00:05       21 阅读
  8. LLVM Cpu0 新后端6

    2024-06-12 00:00:05       21 阅读
  9. 大模型开发Semantic Kernel 简介

    2024-06-12 00:00:05       13 阅读
  10. Spring Boot开发宝典!超实用50个注解一网打尽

    2024-06-12 00:00:05       12 阅读
  11. 求职力扣刷题DAY20--二叉树 part06

    2024-06-12 00:00:05       15 阅读