大宇私人领地伊甸园丨宁愿做了后悔,也不要错过后悔[www.mrdayu.com]
注册

24小时联系邮箱:[email protected]

所有文章
大宇私人伊甸园: 首页 > 所有文章 > 编程人生 > C/C++语言 > C标准库详解 > malloc详解


友情链接:


malloc详解

发布时间:2018/11/21 C标准库详解 阅读:49

malloc

malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。
malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。
返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。

Linux系统下测试:

#include <stdlib.h>
#include <stdio.h>
int main(){
        char *p=malloc(100*sizeof(char));
        p="hello wolrd!";
        if(p){
                printf("%d",sizeof(p));
        }else{
                printf("error!\n");
        }
        return 0;
}

运行效果:

[[email protected] STDC]$ gcc malloc_test.c 
[[email protected] STDC]$ ./a.out 
8[[email protected] STDC]$ 

Windows系统下测试:

#include <stdio.h>
#include <stdlib.h>
int main(){
	char *p = (char *)malloc(sizeof(char)*100);
	p = "hello world";
	printf("size=%d\n",sizeof(p));
	printf("内容:%s",p);
	getchar();
	return 0;
}

输出结果:

size=4
内容:hello world

头文件:

#include <stdlib.h>

返回值:

  • 失败:返回NULL
  • 成功:返回指针地址

结尾:

malloc在所有平台下都能使用,由于本人mac没有带。所以只能在Linux和windows进行代码测试。

返回值为NULL,表示内存分配不成功。

无关函数:

getchar();//windows下测试控制台一闪而过,使用cl在cmd下运行执行程序,我在VS这种IDE下启动需要加getchar();将程序卡在结果输出的时刻。

The bottom line, for me, is simple.

Let’s hope it doesn’t take 500 years for a discipline of testing to becomes the standard for software developers.

From:dayu

您好!请登录

合作网站快捷登录:
点击取消回复

已有0评论

    大宇博客

    点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息