
c++
鲸鱼爱泡芙
这个作者很懒,什么都没留下…
展开
-
使用signal()截取信号后无法产生coredump解决办法
如下所示代码,当截取信号时(已设定ulimit -c unlimited), 在signalProcess()中有三种处理办法,导致三种结果1:进程不会结束,会不停地调用 crashHandler,因为信号没有被处理2:进程结束,但是不会产生coredump3: 处理信号后,将信号恢复为内核默认处理,会产生coredump文件,并结束进程void signalProcess(int signalval){ LOG_WARNING("signal:%d\n", signalval原创 2022-04-07 11:59:43 · 2688 阅读 · 0 评论 -
关于curl通过http上传文件踩坑记录
当< HTTP/1.1 404curlRet 不会返回错误码,而是OK,curlRet = curl_easy_perform(pCurl); 所以需要单独判断一下 //http返回404时 curlRet 不会返回错误。需要单独判断 curl_easy_getinfo(pCurl, CURLINFO_RESPONSE_CODE, &resCode); if (resCode != 200) { log_print(LOG_LEVEL_ERRO原创 2022-03-21 10:56:06 · 656 阅读 · 0 评论 -
有符号类型强制转换为无符号类型导致的错误、强制类型转换不安全、隐式类型转换注意事项
项目中的错误案例代码中使用int32 类型 将值十进制值2147483648(0x8000 0000)赋值给uint64类型,在int32类型的二进制中,最高位为1,表示为补码。由Int32赋值给uint64类型的过程中,有两个过程:①将int32升级为int64,此时多出来的最高位全部补1,此时变成了0xffffffff80000000;②,将int64转化为uint64,此时十进制值为18446744071562067968。因此该值远大于2147483648(以下转载自liuchengxu_转载 2022-03-01 16:27:47 · 1799 阅读 · 0 评论 -
包含类和继承类的区别
继承类class CTestA{public:public: void testa(void); int a;};class CTestB : public CTestA{public: public: void testb(void); int b;};void CTestA::testa() { CTestB b; b.b = 3; printf("testa: a:%d b:%d\n", a, b.b);原创 2021-10-12 11:15:58 · 538 阅读 · 0 评论 -
C++版测试用新建文件写入数据代码
#ifdef FILTE_MANAGE_TEST#include <dirent.h>#include <unistd.h>#include <errno.h>#include <sys/stat.h>#define FILEMANAGE_PATH "/mnt/datatest/"#define FILEMANAGE_FILE_HEAD "test_"#define FILEMANAGE_ERR_OK (0)#de原创 2021-06-01 11:23:46 · 320 阅读 · 0 评论 -
delete与delete []区别
如下所示代码/** * @function: MYLIB_VECTOR_DeleteVector * @brief: 释放一个向量 * @param[in]: void *pVector 向量地址 * @param[out]: none * @return: void */void MYLIB_VECTOR_DeleteVector(void *pVector, VECTOR_ELEM_TYPE type){ switch (type) {原创 2020-07-07 21:55:33 · 238 阅读 · 0 评论 -
delete一个void*类型的指针导致析构函数不能执行
delete一个void*类型的指针,在gcc下面编译会报一个warning,那么究竟要不要理会这个warning呢?如果我们new出来的指针是一个基本类型,没什么关系,内存还是会被释放的,但是如果是一个类对象指针,在处理过程中转成了void*,那就有问题了,析构函数将不会被调用。这个和用delete删除指针数组是一样的结果。...转载 2020-07-07 21:31:39 · 852 阅读 · 0 评论 -
C++中const用法
1.const和指针:如果const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量。char greet[] = “Hello”;char* p = greet; //①greet不能变,即不能通过(*p) = 的方式改变//但仍可通过greet = 的方式改变;指针可指向别处。const char* p = greet;char const * p = greet; //同①char* const p转载 2020-06-30 16:29:22 · 162 阅读 · 0 评论 -
c++中模板是什么?为什么要定义模板?
一、c++中模板是什么?首先:int Max(int x, int y){ return x > y ? x : y;}float Max(float a,float b){ return a > b ? a : b;}通常我们想要比较不同数据类型的时候不得不定义两种不同的函数来表示区分,为了能精简代码和避免强类型的严格性和灵活性的冲突,我们就需要用到模板去改善这种情况。二、为什么要定义模板?强类型程序设计中,参与运算的所有对象的类型在编译时即确定下来,并转载 2020-06-30 15:04:48 · 2376 阅读 · 0 评论 -
C++学习——在C文件中调用C++文件中的函数
1.cpp文件中的内容#include "mytest.h"#include <iostream>using namespace std;int add(const int a, const int b){ cout << "a=" << a << endl; cout << "b=" << b << endl; return (a + b);}2.hpp文件中的内容在函数声明时转载 2020-06-24 10:35:15 · 724 阅读 · 0 评论