内存泄漏 字符串 C语言标准库函数 结构体

  • 内存泄漏:程序刚跑起来很好,跑几小时或者几天,程序崩溃
while1{
	sleep(1);
	int *p=malloc(1024);//malloc申请的空间,程序不会主动释放,linux中的话,程序结束后系统会回收空间;
}
//如何避免?
1)注意循环中有没有一直申请;
2)及时合理释放内存空间:free(p); p=NULL;
  • 字符串定义
char *pstr="hello world,this is my world!\n";
printf("%s\n",pstr);//字符串用占位符%s来表示,不需要用i的下标遍历;
- '\0'代表字符串的结束标志
- 字符串的存储方式:字符串在内存中除了有效字符外,还会自动在后面补一个'\0',作为字符串的结束标志;
- 不写(int a4[]),数组的大小会根据初始化的时候元素个数来确定;
- int a3-{1,2,3};//连续空间整个数组的大小是元数个数x元素类型大小;
- 真正计算有效字符的长度,用strlen,在计算字符串大小的时候遇到'\0',就结束计数了

char str[128]={'\0'};//申请了128个字节,初始化为'\0'
  • C语言标准库函数
- memset (pstr,'\0',128);//初始化的对象开头  初始化成什么字符   多大
- strcpy函数的作用是把含有“'\0'”结束符的字符串复制到另一个地址空间。strcpy是一种C语言的标准库函数,返回值的类型为“char*”;strcpy是“string copy”(字符串复制)的缩写。
	char *strcpy(char* test,const char *src);
	eg:
		char dest[128]={'\0'};
		char *src="this is a test";
		strcpy(dest,src);
		puts(dest);
- strncpy
	char *strncpy(char* destin,char *source,int maxlen );
-strcat(拼接函数):将两个char类型连接。
#include<stdio.h>
#include<string.h>
int main(){
	char *strsrc="hello";
	char test[128]="word!";
	strcat(test,strsrc);
	printf("%s",test);
	return 0;
}
运行结果:helloworld!(中间无空格)
- strcmp:strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

  • 结构体
#include<stdio.h>
#include<string.h>
//定义一个结构体
struct Student
{
	int score;
	char name[128];
};
int main(){
	struct Student *p;
	p = (struct Student *)malloc(sizeof(struct Student));
	p->score = 98;
	strcpy(p->name,"李四");
	printf("名字:%S,分数:%d\n",p->name,p->socre);
	printf("地址是%p\n",p++);//指针++跳转整个结构体的大小
	printf("加后的地址为:%p\n",p);
	system("pause");
	return 0;
}
//如果用结构体指针,就不能让用点运算符来访问结构体中的变量,要用->
//指针是存放地址的变量,*只有在指针变量声明的时候才代表指针,其他位置*代表取值运算符;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值