C/C++
文章平均质量分 94
luckyOverflow
专业摩托车维修师傅...
展开
-
如何窥探C++对象内存布局
读过《深度探索C++对象模型》一书会发现,本文中通过GDB探究的child对象内存布局与书中的描述略有差异———虚表开头是否有8Bytes的0填充。这一细节其实无所谓对错,因为未在语言层面规定,具体细节视编译器的实现而定。本文想表达的观点在于:书中描述的结论并不重要,没必要死记硬背。重要的是结论背后的逻辑和依据,以及独立探究并验证结论的能力。原创 2023-03-09 17:06:26 · 341 阅读 · 0 评论 -
PyTorch AMP autocast源码解析
详解PyTorch Autocast核心C++源码原创 2023-02-20 18:55:20 · 1258 阅读 · 3 评论 -
C++重载决议(Overload Resolution)
最近在看PyTorch源码时被C++模版给”恶心“到了,在死磕模版的路上,又遇到重载决议这个拦路虎。恰好在刷B站时看到这个视频CppCon 2021 Back To Basics: Overload Resolution,感觉讲的还不错,顺便记录下来。一、前景知识(overload vs overide)在讨论重载决议之前,我们需要先区分一些相似但完全不同的术语和概念。1、多态的定义overload和override大家讨论的非常多,为了理解它们之间的区别,我们需要回顾一下多态的概念,简单来说,多态原创 2022-04-08 12:31:16 · 1136 阅读 · 0 评论 -
转义字符惹的鬼
最近学习openCV,写了个小程序,大致就是将两幅图像进行混合。编译链接后生成可执行文件,之前在VS中运行还是可以的,直接点击exe文件运行,却发生了如下的错误: 错误是啥意思我也没看懂,不过还是马上察觉到哪里出了问题,代码中我读入图像数据用的是相对路径”1.png”,而生成的exe文件与图像却不在同一级目录下,这才导致了错误的发生,于是改用绝对路径替换”H:\Work_opencv\Trac原创 2017-06-11 11:34:20 · 481 阅读 · 0 评论 -
C语言内存模型
内存模型——屏蔽各个硬件平台和操作系统的内存访问差异,以实现让xxx程序在各种平台下都能达到一致的内存访问效果。(即不同平台下的实现差别被统一的内存模型所隐藏,只需要根据这个抽象的内存模型来编写程序即可)。不同语言有不同的内存模型,只有掌握了内存模型,才算是真正具有了对程序的时间和空间效率进行分析的基本能力。不难看出,内存模型其实定义了变量的一套访问规则。下面介绍C语言在linux下的...原创 2018-05-04 09:57:49 · 750 阅读 · 0 评论 -
字符串常量和字符数组
据C语言内存模型,字符串常量应该被放在代码区(也有书上称作数据区),是只读不可写的(所以说字符串常量不可修改)。下面两个函数分别返回hello和world两个字符串,但却只有一个能达到预期效果: 输出结果: 可以看到,结果只输出了hello,并且编译时报了一个warning,意思是第二个函数返回的是局部变量的地址。从这个warning的信息中可以看出问题所在。下面分析两个函数: 1...原创 2018-05-04 10:03:22 · 2148 阅读 · 3 评论