C标准库中的alloca
函数
头文件#inlcude <malloc.h>
原型:
void * __cdecl alloca(size_t);
参数:size_t
: 申请分配内存的尺寸
返回值:void*
: 分配到的内存地址alloca
与malloc
,calloc
,realloc
类似,需要注意的是它申请的是“栈(stack
)”空间的内存,用完会在退出栈时自动释放,无需手动释放。alloca
不宜使用在必须广泛移植的程序中, 因为有些机器不一定有传统意义上的”堆栈”。
C++中memset
函数的用法
memset
:char型初始化函数
头文件:<string.h>
或 <memory.h>
函数原型:void *memset(void *s , int ch , size_t n )
memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );
memset(结构体/数组名 , "用于替换的字符“ , 前n个字符 );
函数解释:将s中的前n个字节用ch替换并且返回s
函数作用:在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作。
示例1
#include<iostream>
//#include"string.h"
using namespace std;
int main()
{
char str[10];
str[9] = 'w';
memset(str,97,9);
for(int i=0;i<10;i++){
cout<<str[i]<<" ";
}
return 0;
}
输出
a a a a a a a a a w
:::info
说明:使用memset
似乎不需要使用额外的头文件。
:::
示例2
#include<iostream>
//#include"string.h"
using namespace std;
int main()
{
char str[10];
str[9] = 'w';
memset(str,97,sizeof(char)*10);
for(int i=0;i<10;i++){
cout<<str[i]<<" ";
}
return 0;
}
输出
a a a a a a a a a a
示例3
#include<iostream>
using namespace std;
int main()
{
char str[10];
memset(str,65,sizeof(str)-3);
for(int i=0;i<10;i++){
cout<<str[i]<<" ";
}
return 0;
}
输出
A A A A A A A