单项选择题
C语言标准库中提供的动态分配内存函数包括:
以下关于这些函数描述中,错误的是()。
A.程序结束后,从堆区申请的内存空间不会被系统自动释放,导致该内存不能再被使用(称为内存泄露)。用free函数可以释放_Memory所指向的内存空间
B.free只是释放指针指向的内容,该指针还指向原地方(此时的指针称为野指针)。操作野指针可能导致不可预料的错误。所以,使用free释放指针指向的空间后,应将指针的值置为NULL
C.realloc函数可以重新_NewSize字节的内存空间,该空间为用malloc等函数已经申请的空间,_Memory指向该空间的首地址。如果_NewSize小于或等于_Memory之前所指向的空间大小,保持原有状态不变。如果_NewSize大于原来_Memory之前所指向的空间大小,系统会出错
D.malloc函数可以从堆区申请_Size字节的内存空间。如果申请成功,返回所分配内存空间的首地址;如果申请失败,返回值为NULL
相关考题
-
单项选择题
对于通用搜索函数void*search(void*a,void*k,int n ,int m),假如有char*os[]={"dos","win","centos","ubuntu","mac"};char*k ="linux";正确的调用语句是()。
A.int *r=NULL;for(int j=0;j< 5;j++){r=search(os[j],k,5,sizeof(char));if(r!=NULL)break;}
B.int *r=NULL;for(int j=0;j< 5;j++){r=search(os[j],k,6,sizeof(char *));if(r!=NULL)break;}
C.search(os,k,5,sizeof(char ));
D.search(os,k,5,sizeof(char *)); -
单项选择题
对于通用搜索函数void*search(void*a,void*k,int n ,int m),参数n表示元素个数,m表示的是什么?()
A.要查找的数据
B.要查找的数据的数据元素的下标
C.要查找的数据的数据类型
D.要查找的数据的数据类型所占字节数 -
单项选择题
要调用void swap(void *a ,void *b ,int size )函数交换两个字符串char *s1=strdup("hello");char *s2=strdup("world");调用语句为()。
A.swap(&s1,&s2,sizeof(void *));
B.swap(s1,s2,sizeof(void *));
C.swap(&s1,&s2,sizeof(char *));
D.swap(s1,s2,sizeof(char *));
