C语言-申请内存

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    char szStr[] = "My name is qjy";//定义数组
	char * szStr1;//定义一个指针类型数组,不告诉长度和内容
	int len = (strlen(szStr) + 1);//定义一个长度变量,存储szStr数组长度,加1,是因为在定义char * szStr1;是以\0结尾
	szStr1 = (char*)malloc(len * sizeof(char));//申请内存空间
	memset(szStr1,0, len);//将申请的内存刷成零
	strcpy(szStr1, szStr);//szStr数组内容复制到szStr1
	puts(szStr1);//打印szStr1的字符串
	free(szStr1);//释放内存空间
	return 0;
}

 详解:

free函数在释放内存后,为了防止数据泄露,它会把释放的空间用cd填充
指针类型(也可以说是定义的数组名)=(指针类型*)malloc(sizeof(指针类型)*数据数量)

memset() 的作用是在一段内存块中填充某个给定的值。因为它只能填充一个值,所以该函数的初始化为原始初始化,无法将变量初始化为程序中需要的数据。
char *strcpy(char *dest, const char *src)
dest -- 指向用于存储复制内容的目标数组。
src -- 要复制的字符串。


版权声明:本文为qq_70851535原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。