avatar

C整型数组长度与free()

关于C获取整型数组的长度

  • 在形参中传递整型数组时应该顺带传递长度n(我没想到其他方法呀)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include<stdio.h>
    void test(int * test);
    int main()
    {
    int a[] = {1,2,3,4,5};
    printf("main:%d, length:%d.\n",sizeof(a),sizeof(a)/sizeof(int));
    test(a);
    return 0;
    }

    void test(int * test)
    {
    printf("test:%d, length:%d.\n",sizeof(test),sizeof(test)/sizeof(int));
    }
  • 输出
    1
    2
    main:20, length:5.      // 返回的是内含5个整型的数组大小,5*4=20字节
    test:8, length:2. // 返回的是整形指针的大小8字节

    关于free()函数

  • free()释放的是指针指向的内存,并没有将指针释放
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // free()后并没有将指针指向NULL(0x0000这个逻辑地址)
    // 并且free()掉的这段内存将被放到一段内存池中,如果有合适的malloc就会分配这段内存
    while(current != NULL)
    {
    current=head;
    head=current->next;
    printf("释放之前的地址:%p\n",current);
    free(current);
    printf("释放之后的地址:%p\n",current);
    }
  • 输出
    1
    2
    释放之前的地址:0x9a3010
    释放之后的地址:0x9a3010
文章作者: Gy
文章链接: http://sgyat.cn/2020/04/03/C杂记1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 年轻没有梦
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论