但是,C程序编写中很容易出现内存泄漏问题。内存泄漏是指在程序运行过程中,一块已经动态分配的内存空间,因程序中某些原因未被释放,导致该程序在运行一段时间后,占用的内存越来越多,直到程序崩溃或系统出现致命错误。
昨天,一位学生问了我一个问题:他建了一个默认的ASP.NET Core Web API的项目,也就是那个WeatherForecast的默认项目模板,然后他把默认的生成5条数据的代码,改成了生成150000条数据,其他代码没变,如下:然后他用压力测试工具对这个.NET编写的Web API模拟了1000个并发请求,发现内存一路飙升到7GB,并且在压力测试结束之后,内存占用也不见回落。
动态数组的内存空间是从堆上分配的,是在执行代码过程中分配的,当程序执行到这些语句时,才为其分配。- 调用free时, 传入指针指向的内存被释放, 但调用函数的指针值可能保持不变, 因为p是作为形参而传递给了函数。
作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误或者内存泄漏。