C语言:动态内存分配

#include<stdio.h>
#include<malloc.h>
int main()
{int btc,*p1;
p1=(int *)malloc(10*sizeof(int));

for(btc=0;btc<10;++btc)
scanf("%d",&p1[btc]);
printf("\n");
for(btc=0;btc<10;++btc)
printf("%d",p1[btc]);
}我没定义数组为什么还可以像数组那样输出
我没定义数组为什么还可以像数组那样输入输出

malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上
p1=(int *)malloc(10*sizeof(int))相当于生成了一个动态数组,其长度可待定。
p1是一个指向一连续内存块的指针。malloc申请时就相当于定义了一个指针,长度只是待定的,指针指向首地址。在一定长度下,这与数组的存储分配是一致的,因此可以像数组那样输入输出。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-14
p1=(int *)malloc(10*sizeof(int));就是生成了一个动态数组啊

而且C语言里p[x]实际上就等价于*(p+x),只要p是指针类型的变量,不管它是数组,还是其他什么,都不会报错
第2个回答  2009-07-15
1.p1=(int *)malloc(10*sizeof(int)); //malloc 函数将会在动态存储区中分配一个长度为 10*sizeof(int)的 <连续> 空间。 而且p1的值是 分配域的起始地址;这就有一点像数组名了。

2.例如 int temp[10]; int *ptemp; ptemp=temp; //得到数组的首地址。
这样 ptemp 就可以 引用 数组的元素了。比如 ptemp[i];
当然 这是 固定分配内存的。

3.scanf("%d",&p1[btc]); 和 printf("%d",p1[btc]);
这两个函数 中 p1 的作用 就 是相当于数组名。 引用动态的数组。本回答被提问者采纳
第3个回答  2009-07-14
下标操作符是对原始地址做指针偏移,是从汇编里延续下来的写法。

【C】动态内存管理 malloc calloc relloc free 函数详解
该代码中free函数释放了malloc开辟的动态内存空间,但是没有将指针置空,导致后面调用时出现了野指针导致了非法访问。所以一个好的代码习惯是在释放动态内存空间后,将这个空间的指针置为空。5. C\/C++程序的内存开辟 C\/C++程序内存分配的几个区域:有了这幅图,我们就可以更好的理解之前介绍的static关键...

C语言:动态内存函数:malloc的使用详解
动态内存分配的代码示例如下:int* ptr = malloc(40); if (ptr != NULL) { \/\/ 使用ptr指向的内存 ... free(ptr); \/\/ 释放内存 } else { \/\/ 处理内存分配失败 ... } malloc是C语言提供的一种灵活内存管理工具,它允许在程序运行时动态地请求和释放内存,增强了程序的灵活性和适应性。

动态内存分配详解——C语言
动态内存分配是C语言中处理内存空间的关键,它解决了固定空间浪费或不足的问题。动态内存管理旨在提供灵活的内存分配和释放,以适应程序运行时的需求。主要的动态内存管理函数有malloc()和free()。malloc()用于动态申请内存,其原型在stdlib.h头文件中。free()用于释放先前动态申请的内存,如果不主动释放,...

[C语言] 5分钟看懂什么是 malloc
动态内存分配是C语言中一个关键概念,它允许程序员在程序运行时动态地分配和释放内存。初学数组时,常常会遇到一个问题:如何在程序中定义数组大小,而不是在函数开始时预先声明一个大数组,仅使用其中的一部分。考虑下面的程序,我们需要一个大小为N(N<1000)的数组,通常我们会这么做:这样做总是感觉...

malloc在c语言中是什么意思
C语言中malloc是动态内存分配函数。首先,malloc函数的用法非常简单,只需要在代码中调用该函数并传入所需的内存大小即可。malloc函数的原型如下:```cvoid*malloc(size_tsize);```。其中,size是要分配的内存块的字节数。malloc函数会在堆(heap)中为这块内存分配空间,并返回一个指向该内存块的指针...

c语言中动态内存分配的本质是什么?
你编写数据库程序,可能需要处理大量数据,也可能仅处理少量。动态内存分配允许你根据程序需求动态申请内存,避免浪费或不足。程序之间需要共享内存时,操作系统扮演中间人角色,确保内存使用有序。动态内存分配允许程序在运行时根据需要申请内存,操作系统提供内存管理以确保不同程序之间的内存使用安全有序。动态...

c语言中malloc函数的用法
malloc函数是C语言中的一种动态内存分配函数。它可以在程序运行时动态地分配内存空间,使程序具有更大的灵活性和可扩展性。使用malloc函数可以在程序运行时动态地分配内存空间。例如,下面的代码片段可以申请一个大小为10个整形变量大小(即40个字节)的连续内存空间,并将其首地址赋给指针变量p。在程序运行...

C语言关于MALLOC的用法
malloc是C语言中用于动态分配内存的一种方法。通过使用malloc,程序可以在运行过程中根据需求申请不同大小的内存空间。例如,表达式(char*)malloc(sizeof(char)*20)的作用是动态分配20个char类型的元素所占的内存空间,并将返回的指针强制类型转换为char类型的指针。这种操作使得程序在内存管理上更加灵活,...

C语言(六):动态内存管理
动态内存管理在C语言中扮演着关键角色,它允许程序在运行时动态地分配和释放内存空间,以适应程序的动态需求。这是通过使用一系列标准库函数来实现的,这些函数位于stdlib.h头文件中。以下是这些关键函数的简要介绍:首先,我们有malloc()函数。它允许用户请求分配一定大小的内存空间。例如,为了声明一个整型...

C语言-动态分配内存 malloc & free
\/\/ 当销毁时只需要free一次,malloc了几个字节就会free几个字节,和char类型还是int类型无关 free(p);在一个函数中动态分配的内存,在另一个函数中操作这块内存 (1) MM是一个系统级的东西,所有的应用程序都向同一个MM申请内存。(2) 何为借出?实际上,在内存被借出时,MM只是把它管理的内存...

相似回答
大家正在搜