C/C++
文章平均质量分 92
beeworkshop
长风破浪会有时,直挂云帆济沧海
展开
-
c++杂谈-1
先生成xxx.dll,xxx.lib和xxx.h文件,再让程序利用xxx.lib和xxx.h文件编译得到xxx.exe文件,最后让xxx.exe在当前目录或者系统目录下加载xxx.dll文件并引用其中的函数。需要三个文件的支持。就是利用windows的API函数直接在程序中动态加载dll文件并使用其中的导出函数。非静态函数也就是全局函数,可以在整个项目任何的.c文件中访问。对于c++,则需要导出类的成员函数到lib文件中。system()函数可以调用系统的外部程序。接下来使用新建的项目调用dll并测试。原创 2023-08-08 20:04:30 · 103 阅读 · 0 评论 -
c++杂谈-2(栈堆的内存布局)
动态链接库.so加载内存后.code代码段为所有进程共享,但.data数据段中开辟一个GOT,GOT及.data在每个进程中保留一份独立的副本。通过共享的.code相对于.data寻址查找GOT表项,从而定位(重定位)其他.code的方式。结果动态链接库的.code代码段可以在内存中被所有进程共享,通过代码段的地址相对寻址GOT表项,查表后再确定其他动态库的代码段地址。编译的时候,头文件.h是不编译的(一般里边只有声明),编译的基本单元是.c或者.cpp文件(.c和.cpp都是编译单元)。原创 2023-08-11 09:11:48 · 120 阅读 · 0 评论 -
c++杂谈-3
含完美转发,Eclipse CDT环境,断言,时间应用原创 2023-08-12 16:05:27 · 368 阅读 · 0 评论 -
c++杂谈-4
另外,枚举名的作用域为枚举定义所属的作用域,这意味着如果在同一个作用域内定义两个枚举,它们的枚举成员不能同名。最后,枚举可能不是可完全移植的,因为不同的实现可能选择不同的底层类型。例如,可以将0传递给形参为int的函数,但是,如果将nullptr传递给这样的函数,编译器将视为错误。以前,C/C++用0表示空指针,这带来了一些问题,这样的话0既可以表示指针常量,又可以表示整型常量。为了避免延时,就需要将变量用volatile修饰,达到的效果就是强制CPU去直接读内存中的变量值。register修饰的变量是。原创 2023-08-13 21:39:35 · 353 阅读 · 0 评论 -
c++杂谈-5
decltype只分析表达式并得到它的类型,不会计算执行表达式。decltype分析函数也只是一种表达式,因此不必担心在使用decltype时调用了函数。C++14标准对函数返回类型推导规则做了优化,函数的返回值可以用auto,不必尾随返回类型。auto是一个占位符(C++11给auto新增的角色),为函数返回值占了一个位置。函数的类型是指:返回值和参数列表(函数名和形参名不是)——形参只涉及个数与类型。回调函数:函数由用户定义,但调用不由用户来完成,调用随后交给系统/框架去完成。原创 2023-08-14 23:39:23 · 375 阅读 · 0 评论 -
C++开发环境的搭建-Windows:VSCode+mingw64+CMake
这里要注意:VSCode中将一个打开的目录作为项目目录,并在该目录中自动生成.vscode目录——该目录中的settings.json作为CMake插件在VSCode中的配置文件。应该将本项目的总控CMakeLists.txt放置在和.vscode/同级的目录中,否则VSCode的CMake插件将不识别项目的目录。生成的tasks.json不用修改,只需记录tasks.json文件中的”label“配置,并把label选项的内容拷贝到launch.json中完成配置即可。配置基本与前边单文件调试设置类似。原创 2023-05-10 21:19:12 · 1135 阅读 · 0 评论 -
Spring Boot如何排查内存泄露
背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCache转载 2020-05-09 11:37:43 · 429 阅读 · 0 评论