zoukankan      html  css  js  c++  java
  • C语言malloc的用法及详解

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 void freem(int* p){
     4 #include <stdio.h>
     5 #include <stdlib.h>
     6 void update_value(int* p){
     7         *p = 100;
     8 }
     9 int main(){
    10         int a=10;//在栈上面分配变量a 占4个字节        int *p = (int*)malloc(sizeof(int));//申请类型是int内存空间;占4个字节;p指针指向该4个字节的内存空间
    11         //p变量也占4字节;所以sizeof(p)=8个字节
    12         *p = 50;//赋值p只指向的动态空间为50
    13         printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld 
    ", *p, p, sizeof(*p), sizeof(p),sizeof(a));
    14         free(p);//修改p指向的内存中的数据
    15         printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld 
    ", *p, p, sizeof(*p), sizeof(p),sizeof(a));
    16         update_value(p);
    17         printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld 
    ", *p, p, sizeof(*p), sizeof(p),sizeof(a));      
    18 
    19         return 0;
    20 }

    int *p = (int *)malloc(sizeof(int))

    malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间,

    因为char、int 、long这些类型的字节大小是不一样的,我们知道了首地址,

    还要知道是以几个字节为单元。

    所以,这句话一共开辟了8个字节(某些计算机上),这也是为什么我写sizeof(int),而不是直接写4的原因。

  • 相关阅读:
    Robot Framework(一)安装笔记
    Postman之获得登录的token,并设置为全局变量
    Postman之简单使用
    Postman之前言
    LoadRunner之使用JSEESIONID访问网站
    Jmeter之逻辑控制器/定时器
    android 解决小米手机上选择照片路径为null情况
    spring MVC学习之二
    Spring MVC学习一
    Struts学习总结(一)
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8569250.html
Copyright © 2011-2022 走看看