1:动态存储区和静态存储区的区别,动态存储区在程序裕兴的过程中可能内存被程序员或者是编译器释放掉,静态存储区只有当程序运行完后才会被释放内存
2:c语言中,数据的存储区分为动态存储和静态存储,其中动态存储又分为堆和栈内存区域
3:栈是一个线性分配的内存区域,分配的内存空间都是从高地址到低地址,其中栈指针式未使用栈内存区域和已经使用栈内存区域的分界线,堆是一个不定向的分配内存空间,是以指针的形式分配的内存空间,从低地址到高地址
4:栈一般用于函数参数传递中,函数返回值,自变量,是编译器自行分配的内存空间,当一个函数调用完以后栈内存空间就已经被释放掉了
5:堆内存空间是程序员自己调用函数来分配的内存空间,一般有malloc,calloc,realloc,free,包含在头文件
6:使用对内存空间的注意事项 1:在使用malloc的时候需要指定分贝内存的大小,分配成功就会返回内存地址,失败就会返回NULL,free 释放内存的时候只需要传入需要释放的指针,这个指针必须是有分配函数分配出来的
2:calloc在分配内存后,将分配的堆内存的内容置为0
3:relloc函数其实做了这三件事,第一按照新内存的大小,重新分配一块内存空间,第二讲原有的内存空 间的内容复制到新的内存空间中去,第三释放原来的内存空间,而且要注意最好以前那个指针和返回 来那个指针不是同一个指针
4:被分配到堆内存的指针如果没有地方释放,其资源是不会被系统回收的,这将会造成内存泄露
5:内存在被释放掉以后,指针应该被设置为NULL,同时在使用的指针的程序中判断是否为NULL
6:只有作为malloc,calloc或是realloc返回值的指针,才可以被free释放,或是被realloc处理
7:函数使用指针作为返回值的时候,不能返回指向函数内部栈区域的地址
8:结构体作为函数的返回值的时候,可以返回更多的信息,但是在韩式退出的时候需要复制栈中整个结构体的内容
9:函数使用参数中的变量等同于函数的自动变量,对他们的更改,不会影响到函数调用者传入的变量
10:在函数内部使用结构体的时候,整个结构体讲被压入到栈内存中,这瞪圆一般的变量压入内存情况