内存泄漏:程序刚跑起来很好,跑几小时或者几天,程序崩溃
while (1 ){
sleep ( 1 ) ;
int * p= malloc ( 1024 ) ;
}
1 )注意循环中有没有一直申请;
2 )及时合理释放内存空间:free ( p) ; p= NULL ;
char * pstr= "hello world,this is my world!\n" ;
printf ( "%s\n" , pstr) ;
- '\0' 代表字符串的结束标志
- 字符串的存储方式:字符串在内存中除了有效字符外,还会自动在后面补一个'\0' , 作为字符串的结束标志;
- 不写(int a4[ ] ),数组的大小会根据初始化的时候元素个数来确定;
- int a3- { 1 , 2 , 3 } ;
- 真正计算有效字符的长度,用strlen,在计算字符串大小的时候遇到'\0' , 就结束计数了
char str[ 128 ] = { '\0' } ;
- 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 ;
}