c语⾔字符串动态分配内存函数,C语⾔malloc()函数:动态
分配内存空间
头⽂件:#include
malloc() 函数⽤来动态地分配内存空间(如果你不了解动态内存分配,请查看:C语⾔动态内存分配及变量存储类别),其原型为:
void* malloc (size_t size);
【参数说明】size 为需要分配的内存空间的⼤⼩,以字节(Byte)计。
【函数说明】malloc() 在堆区分配⼀块指定⼤⼩的内存空间,⽤来存放数据。这块内存空间在函数执⾏完成后不会被初始化,它们的值是未知的。如果希望在分配内存的同时进⾏初始化,请使⽤ calloc() 函数。
【返回值】分配成功返回指向该内存的地址,失败则返回 NULL。
由于申请内存空间时可能有也可能没有,所以需要⾃⾏判断是否申请成功,再进⾏后续操作。
如果 size 的值为 0,那么返回值会因标准库实现的不同⽽不同,可能是 NULL,也可能不是,但返回的指针不应该再次被引⽤。
注意:函数的返回值类型是 void *,void 并不是说没有返回值或者返回空指针,⽽是返回的指针类型未知。所以在使⽤ malloc() 时通常需要进⾏强制类型转换,将 void 指针转换成我们希望的类型,例如:
1 char *ptr = (char *)malloc(10); //分配10个字节的内存空间,⽤来存放字符
动态内存分配举例:
1 1 #include /*printf, scanf, NULL*/
2 2 #include /*malloc, free, rand, system*/
3 3
4 4 intmain ()
5 5{
molloc函数
6 6 inti,n;
7 7 char *buffer;
8 8
9 9 printf ("输⼊字符串的长度:");10 10 scanf ("%d", &i);11 11
12 12 buffer = (char*)malloc(i+1); //字符串最后包含 \0
13 13 if(buffer==NULL) exit(1); //判断是否分配成功
14 14
15 15 //随机⽣成字符串
16 16 for(n=0; n
20 20 printf ("随机⽣成的字符串为:%s\n",buffer);21 21 free(buffer); //释放内存空间
22 22
23 23 system("pause");24 24 return 0;25 25 }
运⾏结果:
输⼊字符串的长度:20
随机⽣成的字符串为:phqghumeaylnlfdxfirc
该程序⽣成⼀个指定长度的字符串,并⽤随机⽣成的字符填充。字符串的长度仅受限于可⽤内存的长度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论