问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言的空间申请函数使用

发布网友 发布时间:2022-03-03 11:09

我来回答

2个回答

热心网友 时间:2022-03-03 12:39

上面那个,你貌似不懂耶

看好了

malloc

原型:extern void *malloc(unsigned int num_bytes);

用法:#include <alloc.h>

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。

举例:

// malloc.c

#include <syslib.h>
#include <alloc.h>

main()
{
char *p;

clrscr(); // clear screen

p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");

free(p);

getchar();
return 0;
}

free

原型:extern void free(void *p);

用法:#include <alloc.h>

功能:释放指针p所指向的的内存空间。

说明:p所指向的内存空间必须是用calloc,malloc,realloc所分配的内存。
如果p为NULL或指向不存在的内存块则不做任何操作。

举例:

// free.c

#include <syslib.h>
#include <alloc.h>

main()
{
char *p;

clrscr(); // clear screen
textmode(0x00);

p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");

getchar();
free(p); // release memory to reuse it

p=(char *)calloc(100,1);
if(p)
printf("Memory Reallocated at: %x",p);
else
printf("Not Enough Memory!\n");

free(p); // release memory at program end

getchar();
return 0;
}

为什么很多人不喜欢c,c++,因为管理内存的一部分任何必须由程序员自己管理,不然很容易内存泄露,现在有很多检查内存泄露的软件比较常用的有(boundchecker)有兴趣的可以下个试一下自己的程序,你会发现自己好可怕。malloc free使用一般有几个原则(自己总结的,不一定正确,但很实用)
1 ,malloc free必须配套使用,并且尽可能逆序。
2 ,谁malloc的谁free
3,能够不动态分配的尽量不动态分配,动态分配是很费时间的,而且存在一定的风险。

很多人喜欢这样写程序:
type * f()
{
type *t = (type*)malloc ( sizeof(type));
.
.

return t ;
}
这个肯定会出问题,一般象这种情况,一般声明f(type* t),谁调用它谁为t分配空间,谁来释放它的空间。不过很有意思的是,在有写系统函数的会这样.如(char* asctime() ,它返回一个表示时间的字符指针,但是并不要求你释放,你也没有办法释放,但是我可以肯定它这个串肯定不是在堆区分配的)

free的顺序也很重要,很多时候free的时候会出现空指针的引用,不足为齐。有人提议free(t);t = NULL ;这种用法,有一定的道理,当你free一块空间后,操作系统不会立即回收,所以在你再次用t的时候可能还是可以用的,t就成了个野指针,而将其t = NULL后,对t的引用会出问题。

热心网友 时间:2022-03-03 13:57

#include "stdio.h"
void ps(int a)
{
int x,y;
if(a<=0)
{
printf("ERROR!\n");
return;
}
for(x=0;x<a;x++)
{
for(y=0;y<a;y++)
{
if((y)==x||(a-y-1)==x)
printf("0");
else
printf("*");
}
printf("\n");
}
}

void main()
{
ps(5);
}

试试这个
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
珍珠粉可以天天敷脸吗 教你自制珍珠粉面膜 中超什么时候成立 交通刷卡金是什么 哪吒V上市进入倒计时,车身超4米,轴距为2420mm,续航里程401km. 关于倩女幽魂爆鬼问题 倩女幽魂什么是大宝队 关于倩女幽魂爆鬼分红的问题 泰国绿咖喱中的咖喱酱是如何制作的,它的独特口味来源于哪些香料?_百度... 好看电视剧,推荐个,现代都市剧,古装剧,战争爱情剧都可以,要经典,确确 ... 去北京上大学转户口好不好 C店淘宝怎么申请授权书 C语言的内存申请? AISEIC要怎样申请加入? 淘宝C店怎么申请 怎么去掉jpg图片上的马赛克 怎么申请邮C??? 电脑连接投影仪该怎么设置 怎么设置电脑连接投影仪的双屏 电脑连接上投影仪以后电脑显示变小了,怎么设置? 报考人力资源管理师要什么条件? 如何报考人力资源管理师??? ppt中怎样让文同一文本框中的字一个一个出来 人力资源管理师考试个人怎么报名呢? 人力资源管理师证书怎么考呢? 在PPT中,如何控制文本框一个一个的出现? 2020人力资源管理师考试可以自己报名吗? ppt里文本框怎么一个一个出现 社会养老保险网上怎么交 我国传统节日端午节是为了纪念爱国诗人谁的 农村养老保险怎么网上缴费? 正版windows10 有几种激活方式 win10永久激活方式有哪几种? 端午节都有哪些习俗? 如何转换windows10激活方式 Windows10的几种激活方式及潜在风险 win10各版本激活方式是什么 win10各版本激活方式大全 你们当地的端午节都有哪些风俗习惯? 端午节有哪些风俗 如何使用最快速的方式激活windows10所有版本 全国各地的端午节都有哪些风俗习惯 端午节有哪些有趣的风俗习惯 使用Windows10要怎么激活 有哪些方法 要注意什么 端午节你们当地都有什么风俗习惯? Excel 怎么进行随机分组 Excel怎么随机分组?在线等!要求非常详细步骤 excel表格如何实现随机分配,分组 手机中病毒了怎么办啊? EXCEL如何随机分组 如何用Excel进行随机分组 如何用excel根据条件随机选择符合条件的内容显示出来