zoukankan      html  css  js  c++  java
  • C语言之内存空间

    C语言可以用malloc关键字动态申请内存空间。数组在定义时就必须确定好空间的大小(固定值),动态申请可以由用户自定义空间的大小。c中只要申请了空间就必须free()释放掉,否则会造成内存泄露。

    #include<stdio.h>
    #include<windows.h>
    
    int main() {
        int* p = NULL;
        int a = 0;
        scanf_s("%d",&a);//使用malloc动态申请内存,用户可以自己定义申请多少个int,不造成空间浪费。数组则不行,数组在定义时必须确定好数组长度(空间大小)
        p=(int *)malloc(sizeof(int)*a);
        free(p);//释放申请的空间(堆),否则会造成内存泄露
    
        system("pause");
        return 0;
    }
    动态申请堆内存空间

     c语言内存区域划分:

    代码区:存放代码。

    常量区:字符串。

    栈区:局部变量。

    堆区:malloc申请的地址。

    全局数据区:全局变量和static局部变量。

    动态申请内存空间之后一般都要初始化,以防申请的空间里面存在一些值运行时出现错误。

    *memset()函数用来初始化内存,*memcpy()函数把内存数据复制到另一块内存中。

    内存释放: free(p)函数不能释放除了堆以外的内存空间,不能对一块堆空间重复释放2次。malloc与free配合使用。

    C++中申请堆内存的是new关键字,释放内存delete。

    new语法:指针变量=new 数据类型;或者:指针变量=new 数据类型[长度 n];

    示例:int *p=new int; 或者 :char *pStr=new char[50];

    语法:delete 指针变量;或者:delete [] 指针变量;

    示例:delete  p;或者:delete [] 指针变量;

  • 相关阅读:
    Linux 时间同步 03 ntpdate时间同步
    Linux 时间同步 04 ntp时间同步
    Linux 时间同步 02 ntpd、ntpdate的区别
    Linux 时间同步 05 chrony时间同步
    极限编程的12个实践原则
    需要继续理解的
    java的动态代理机制详解
    动态代理详解(一)应用示例
    动态代理详解(二)原理解析
    说说Java代理模式
  • 原文地址:https://www.cnblogs.com/PrideAssassin/p/11528987.html
Copyright © 2011-2022 走看看