![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++工程
文章平均质量分 81
Luck66Max
“放弃很容易,但坚持一定很酷!”
展开
-
C语言结构体对齐
c++11以后引入两个关键字 alignas 与 alignof。其中alignof可以计算出类型的对齐方式,alignas可以指定结构体的对齐方式。因为alignas只能指定比默认值,也就是结构体最长字段,更大的值。所以对齐大小要么是默认值,要么是比默认值大的值。->因为min(4, 2) = 2, 现在变成。因此,最后这个结构体的大小是。因此,最后这个结构体的大小是。因此,最后这个结构体的大小是。因此,最后这个结构体的大小是。null代表内存填充为空。,所以结构体总体应该是。,所以结构体总体应该是。原创 2023-02-26 16:56:52 · 524 阅读 · 0 评论 -
C++智能指针unique_ptr
默认情况下,unique_ptr使用new和delete来分配和释放内存。你可以自定义分配函数和释放函数来替换这两个操作v };delete p;执行结果这里定义unique_ptr的时候语法相比之前更复杂,需要在模板参数里面声明自定义释放函数的类型,这里用decltype(&my_dealloc)完成这个操作,它是个函数指针,指向自定义的释放函数。分配内存的时候使用my_alloc(),因此先打印Allocating 100再调用new申请内存。转载 2023-02-22 16:24:01 · 452 阅读 · 0 评论 -
C++的共享指针shared_ptr,自动管理内存
尽管如此,我仍然觉得还是应该自己总结一下知识点,梳理自己的知识体系手动管理内存会造成内存泄露,现在C++的可以在很大程度上帮我们缓解这个问题,降低我们手动管理内存的心智负担。转载 2023-02-22 15:53:51 · 1298 阅读 · 0 评论 -
C++的内存泄漏
如果想要删除这块内存,就要用delete手动释放,如果不写delete这一行,p所指向的内存就无人问津了,因为知道这块地址的所有者p已经随着函数的结束消失了,但是p所指向的内存还空悬在那里,形成一个孤岛,别人也用不了,这个现象就叫做。动态分配申请内存时,需要程序员手动去请求这块内存,使用完之后需要程序员手动释放,不然 这块内存就会一直存在,别人也无法访问这块内存,就会造成资源的浪费,久而久之,内存资源就会被完全榨干,造成系统崩溃。这里的delete是释放了p指向的内存,不是删除了p本身。原创 2023-02-22 14:31:10 · 142 阅读 · 0 评论 -
gdb学习
用gcc编译源程序的时候,编译后的可执行文件不会包含。如果打算编译后的程序可以被调试,编译的时候要加。原创 2023-02-16 22:55:42 · 39 阅读 · 0 评论