标签: C

5 篇文章

C++问题剖析:C++的static关键字的作用(我从elf结构,链接过程来回答)
    0x01 C++的static关键字主要在以下场景中用到   1)static修饰全局变量和局部变量 全局变量属于数据,放在.data或.bss段,如果是常量字符串的话,那就放在.rodata段,接下来看一下一个普通全局变量和static全局变量有什么区别?   int gdata1 = 10; static int gdata2 = 10; int main() { return 0; }   Linux下创建a.c文件,查看符号表: delphi@delphi-vm:~$ g++ -c a.cpp -o a.o delphi@delphi-vm:~$ objdump -t a.o a.o: file format elf32-i386 SYMBOL TABLE: 00000000 l df *ABS* 00000000 a.cpp 00000000 l d .text 00000000 .text 00000000 l d .data 00000000 .data 00000000 l d .bss 00000000 .bss 00000004 l O .data 00000004 _ZL6gdata2 00000000 l d .note.GNU-stack 00000000 .note.GNU-stack 00000000 l d .eh_frame 00000000 .eh_frame 00000000 l d .comment 00000000 .comment 00000000 g O .data 00000004 gdata1 00000000 g F .text 0000000a main 00000000 *UND* …
C++问题剖析:C++this指针干什么用的?
  开心一刻: 每当对象迷了路,this月老闪现出来说:"跟哥走"。 ---> 剧终     下面是一段最简单的代码: class Test { public: void func() { cout<<"mvalue:"<<mvalue<<endl; } private: int mvalue; }; int main() { Test t1,t2; t1.func(); t2.func(); return 0; }   一个Test类可以生成很多对象,每个对象都有自己的成员变量mvalue值,但是所有对象共享成员方法,比如这里的func成员函数,那么通过不同的对象t1和t2来调用同一个func方法,这个func方法怎么知道打印谁的mvalue值呢?对了,就是this指针的作用,看看调用具体是怎么发生的,如下: t1.func() ====> Test::func(&t1); t2.func() ====> Test::func(&t2);   通过t1和t2对象来调用成员方法func,实际在汇编上,是调用了类Test作用域下的func方法,把调用方法的对象当做实参传递进去了,那么既然编译器自己把对象的地址当做实参进行传递,相应的它就得加个形参来就收,因此,上面的代码经过编译器编译后,就编程这样了:   class Test { public: void func(Test *const this) { cout<<"mvalue:"<<mvalue<<endl; } pr…
C/C++代码头注释规范
mark 下次用 /********************************************************************************* *Copyright(C),Your Company *FileName: // 文件名 *Author: //作者 *Version: //版本 *Date: //完成日期 *Description: //用于主要说明此程序文件完成的主要功能 //与其他模块或函数的接口、输出值、取值范围、 //含义及参数间的控制、顺序、独立及依赖关系 *Others: //其他内容说明 *Function List: //主要函数列表,每条记录应包含函数名及功能简要说明 1.………… 2.………… *History: //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简介 1.Date: Author: Modification: 2.………… **********************************************************************************/ 参考: [1]. https://blog.csdn.net/fmxfmx2013/article/details/30999095?ydreferer=aHR0cHM6Ly9jbi5iaW5nLmNvbS8%3D
C语言 – 多个文件保存时的内存处理
/* 时间:2023/09/12 作者:马文杰 代码功能:存储文件之前,检查内存使用百分比,内存使用超过80%会自动删除最老旧的文件,以此来保证系统正常运行 函数名称: getLogUsePercentage / findMatchingFile / compareFileNames / delOldLogFile / main 历史: 日期:2023/09/21 作者:mawenjie 修改:函数delOldLogFile中有一处没有释放资源,是在combinedTime 申请资源失败时没有释放,文中已有记录标记。 */ #include <stdlib.h> #include <dirent.h> #include <stdio.h> #include <string.h> /* 函数功能: 获取系统指定路径下内存使用的百分比 */ int getLogUsePercentage() { int iUsePcent = -1; char line[512] = {0}; // 执行df命令并读取输出 FILE* pipe = popen("df /home/delphi/solo", "r"); if (pipe == NULL) { perror("Failed to execute df command"); exit(EXIT_FAILURE); } // 读取df命令的输出 while(fgets(line, sizeof(line), pipe)); printf("[+][%s:%d] line: %s\n",__FUNCTION__,__LINE__,…