C++中使用vs2015和g++对new开辟的堆内存是否初始化的分析
在C++中使用new
运算符在堆中申请一内存块的使用权的同时还可以执行对该内存块的初始化工作。下面通过使用2个类对象和2个基本数据类型来分析使用new class_object
、new class_object()
和new int
、new int()
对这块内存的初始化情况。
在C++中使用new
运算符在堆中申请一内存块的使用权的同时还可以执行对该内存块的初始化工作。下面通过使用2个类对象和2个基本数据类型来分析使用new class_object
、new class_object()
和new int
、new int()
对这块内存的初始化情况。
在前文中讲述了Linux服务端TCP的某个链路变成CLOSE_WAIT
状态,然后由于客户端已经关闭了(发送了RST
标志的报文),那么服务端如果继续向这个链路中写入数据的话就会收到SIGPIPE
信号而终止,这篇文章主要通过客户端进入CLOSE_WAIT
后由于收到服务端产生的RST
标志报文进入死循环的情况。注:RST
表示复位,用来关闭异常的连接。
在《使用sed命令批量处理Makefile文件的脚本》文中使用sed命令对前文中的Makefile文件进行了替换、追加和删除操作,这篇文章通过使用sed和awk命令对该Makefile文件的某个字符串进行正则匹配查找以及替换。
map容器是C++ STL中的重要一员,平时会遇到删除map容器中value为指定元素的问题,例如删除所有字符串为"123"或者能整除3的元素。
前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》,里面的Makefile代码有个不好的地方需要修改。当编译.cpp文件时,使用的STD_OPT
变量仍然是编译.c文件时的参数-std=c99
,这个在C++中是不支持的。
之前遇到过要自己实现inet_aton
和inet_ntoa
函数功能的问题,这里总结一下。
网络字节序是大端模式,那么内存中的低地址存放的是数据的高位,内存中的高地址存放的是数据的低位。
inet_aton
是将IPv4地址(点分法)转换成对应的十进制整数;而inet_ntoa
是将十进制整数转换成对应的IPv4地址(点分法)。
遇到一个题,大概要求是写一个函数处理来去掉一个无序的整型数组(例如int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };)中重复的元素,并返回最终的长度。