C/C++

C标准库中的alloca函数

头文件#inlcude <malloc.h>
原型:

  1. void * __cdecl alloca(size_t);

参数:
size_t: 申请分配内存的尺寸
返回值:
void*: 分配到的内存地址
allocamalloc,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

  1. #include<iostream>
  2. //#include"string.h"
  3. using namespace std;
  4. int main()
  5. {
  6. char str[10];
  7. str[9] = 'w';
  8. memset(str,97,9);
  9. for(int i=0;i<10;i++){
  10. cout<<str[i]<<" ";
  11. }
  12. return 0;
  13. }

输出

  1. a a a a a a a a a w

:::info 说明:使用memset似乎不需要使用额外的头文件。 :::

示例2

  1. #include<iostream>
  2. //#include"string.h"
  3. using namespace std;
  4. int main()
  5. {
  6. char str[10];
  7. str[9] = 'w';
  8. memset(str,97,sizeof(char)*10);
  9. for(int i=0;i<10;i++){
  10. cout<<str[i]<<" ";
  11. }
  12. return 0;
  13. }

输出

  1. a a a a a a a a a a

示例3

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. char str[10];
  6. memset(str,65,sizeof(str)-3);
  7. for(int i=0;i<10;i++){
  8. cout<<str[i]<<" ";
  9. }
  10. return 0;
  11. }

输出

  1. A A A A A A A