C语言申请内存?
发布网友
发布时间:2022-03-03 13:31
我来回答
共5个回答
热心网友
时间:2022-03-03 15:00
但在某些时候,我们需要的数组的长度是无法预先确定的,要解决这样的*,需要使用动态数组。动态数组是相对于静态数组而言。动态数组的内存空间是从堆(heap)上分配的,是在执行代码过程中分配的,当程序执行到这些语句时,才为其分配。注意,程序员自己负责释放内存。
1
2
#include<stdio.h>
#include<stdlib.h>
int main(int arcv, char * argv[])
{
int arrLen;
char *array;
char c;
int i;
printf("please set the size of the len:\n");
scanf("%d", &arrLen);
array = (char *)malloc(arrLen*sizeof(char));
if(array == NULL)
{
printf("malloc fail\n");
return -1;
}
for(i = 0; i < arrLen;i++)
{
c = getchar();
array[i] =c;//*array++ =c;
}
for( i = 0; i < arrLen; i++)
{
printf("this array is %c\n", array[i]);
}
free(array);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mallco和free成对出现,在用完申请的内存之后及时释放,否则会造成内存泄漏。
我们在一些项目中经常出现内存泄漏
热心网友
时间:2022-03-03 16:18
如果c语言申请,但是它的内存的话可以清理掉,然后再重新的申请。
热心网友
时间:2022-03-03 17:53
#include
<stdio.h>
#include
<malloc.h>
void
main()
{int
a=10;
int
p*;//定义了一个整数类型的指针
p=malloc(sizeof(int)*a);//分配40个字节的内存空间
*p=5;
*(p+1)=6;
//将分配的内存空间的前两个整数赋值为5和6
free(p);
//使用完之后释放内存空间
}
热心网友
时间:2022-03-03 19:44
语言申请内存就是把语句说的清楚呃,游离让别人能听出来他这个什么意思?不能胡说乱说。
热心网友
时间:2022-03-03 21:52
在C语言中,使用malloc函数来申请内存。函数原型如下:
#include<stdlib.h>
void *malloc(size_t size);
参数size代表需要动态申请的内存的字节数,若内存申请成功,函数返回申请到的内存的起始地址,若申请失败,返回NULL, 在使用该函数时应注意以下几点
1.只关心申请内存的大小,该函数的参数很简单,只有申请内存的大小,单位是字节
2.申请的是一块连续的内存,该函数一定是申请一块连续的区间,可能申请到内存比实际申请的大,但也有可能申请不到,若申请失败,则返回NULL
3.返回值类型是void*,函数的返回值是void*,不是某种具体类型的指针,可以理解成该函数只是申请内存,对在内存中存储什么类型的数据,没有要求,因此,返回值是void*,实际编程中,根据实际情况将void*转换成需要的指针类型
4.显示初始化,注意:堆区是不会自动在分配时做初始化的(包括清零),所以程序中需要显示的初始化