vm-ubuntu-c笔记4(指针初级)

指针初级

在终端中可以用
man 3 malloc来查看如何使用

#include <stdlib.h>
void *malloc(size_t size);
void free(void *ptr);

malloc用来在堆中开辟空间
free用来释放空间

在定义一个指针变量时要注意使指针为null
避免指针指向内核和不和访问端,避免发生错误

#include <stdio.h>/*printf*/
#include <stdlib.h>/*malloc*/

void main(void)
{
    int *p_integer = NULL;/*定义一个指针变量*/
    p_integer = malloc(4);/*指针变量存储存储堆的地址*/
    printf("堆的地址:%p\n", p_integer);/*获取堆的地址*/
    *p_integer = 14;/*将数据段.rodata段的常量14放到堆中*/
    printf("堆中的数据:%d\n", *p_integer);/*打印堆中的数据*/    
    free(p_integer);/*必须手动释放堆空间*/
    p_inter=null;
    printf("\n");
}

因为14是整型及需要4byte,所以在是malloc(4)
定义指针会在对应的函数内获得空间(在栈中)
p_integer = malloc(4);则会在堆中为这个指针开辟空间
*p_integer = 14则是将14这个数放到这个指针所指向的地址的位置

我们在删除一个指针之后,编译器只会释放该指针所指向的内存空间,而不会删除这个指针本身。
在删除一个指针之后,一定将该指针设置成空指针(即在delete p之后一定要加上:p=NULL,c++)(在free§后记得要写p=null,c)
编译器默认将释放掉的内存空间回收然后分配给新开辟的空间。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值