首页 > memset初始化内存

memset初始化内存

在suse 9,运行man memset 查看memset的解释如下:

“NAME

       memset - fill memory with a constant byte



SYNOPSIS

       #include



       void *memset(void *s, int c, size_t n);



DESCRIPTION

       The memset() function fills the first n bytes of the memory area pointed to by s with the constant byte c.

       //从指针s开始,依次填充n个bytes,每个byte的值为c. 

RETURN VALUE

       The memset() function returns a pointer to the memory area s.”





int main()

{

    int *ptr = (int *)malloc(8*sizeof(int));

    memset((void *)ptr, 0xFF, 8);

   

   free(ptr);   

   return 0;

}

在执行memset前,查看ptr内存如下:

(gdb) x /8xw ptr

0x603090:       0x00000000      0x00000000      0x00000000      0x00000000

0x6030a0:       0x00000000      0x00000000      0x00000000      0x00000000

在执行memset后,查看ptr内存如下:

(gdb) x /8xw ptr

0x603090:       0xffffffff      0xffffffff      0x00000000      0x00000000

0x6030a0:       0x00000000      0x00000000      0x00000000      0x00000000





如果修改memset 行代码为:

memset((void *)ptr, 0xFF, 8*sizeof(int));

在执行完memset后,查看内存如下:

(gdb) x /8xw ptr

0x603090:       0xffffffff      0xffffffff      0xffffffff      0xffffffff

0x6030a0:       0xffffffff      0xffffffff      0xffffffff      0xffffffff

这才是我们想要的结果。

 

memset((void *)ptr, 0x1234, 8);

(gdb) x /8xw ptr

0x603090:       0x34343434      0x34343434      0x00000000      0x00000000

0x6030a0:       0x00000000      0x00000000      0x00000000      0x00000000

 

所以在用memset初始化内存时,第三个参数勿忘了 n * sizeof(指针类型).

 

更多相关:

  • C++11标准中可以为模板定义别名,比如 template using ptr=std::shared_ptr; //这里模板定义ptr为智能指针std::shared_ptr定义的别名 所以实际应用中可以借此来简化代码,比如 #include #include

  • 先说结论,智能指针都是非线程安全的。 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include #include #include #include #i...

  • 文章目录unique_ptr 智能指针的实现shared_ptr 智能指针的实现指针类型转换 unique_ptr 智能指针的实现 一个对象只能被单个unique_ptr 所拥有。 #include using namespace std;/*增加模板类型,保证智能指针的类型是由传入的类型决定的*/ t...

  • 文章目录weak_ptr描述声明作用原理实现函数成员使用总结 weak_ptr描述 声明 头文件: 模版类:template class weak_ptr 声明方式:std::weak_ptr statement 作用 根据boost库的官方描述,weak_ptr是...

  • 文章目录shared_ptr描述声明作用原理实现函数使用关于shared_ptr循环引用问题 shared_ptr描述 声明 shared_ptr属于C++11特性中新加的一种智能指针,它的实现方式是模版类,头文件 template class shared_ptr 所以使用shared...