按分类归档: C/C++

wget无法重定向BUG的规避方法

dream/ 七月 4, 2019/ BUG, C/C++, linux/ 1评论

今天,在使用popen调用wget时,发现popen的输出缓冲区中无输出数据,wget的输出仍然是输出到了命令行。

后测试wget www.baidu.com > log,发现不仅是在popen调用时,在shell里也无法将它的输出重定向。后了解到这是wget的一个BUG。

该BUG可通过[……]

阅读全文

QT调试动态库

dream/ 三月 28, 2019/ C/C++, 代码编译/ 0评论

QT直接调试时,发现在动态库中打的断点无效,提示找不到动态库

设置动态库路径即可正常调试

设置位置:选项 ——> 调试器 ——> GDB ——> 额外的启动命令,添加set solib-search-path library_path ,将 library_path[……]

阅读全文

C语言中堆栈溢出的利用—-某条的神奇面试题

dream/ 十一月 25, 2018/ BUG, C/C++, 代码编译/ 0评论

今天在看脉脉的时候遇到了一个神奇的问题。

看到的第一感觉是WTF?没有输入参数怎么改全局变量?

后来看评论区后明白了解决方案,堆栈溢出。大佬就是大佬,之前我从未考虑过还有这种操作。

解决方案1. 利用C中的堆栈溢出

在pass函数中创建一个新变量y,那么&y获得y的地[……]

阅读全文

C++ 智能指针 shared_ptr的实现

dream/ 十月 29, 2018/ C/C++, 数据结构实现/ 0评论

一.实现思路

记录指针的引用计数。每次被复制时,增加计数。每次被赋值时,左侧计数减少,右侧计数增加,同时检查左侧计数是否为0。

从值构造时,new一块空间,并将计数值设置为1。

每次析构时,检查引用计数是否为0,为0则delete构造时new的空间。

默认构造函数可以构造空共享指[……]

阅读全文

各常用排序算法的C++实现及耗时比较

dream/ 十月 28, 2018/ C/C++, 算法及数据结构/ 0评论

一.各算法实现思路

  1. 选择排序:选择出数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。
  2. 冒泡排序:从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右[……]

    阅读全文

自己动手实现数据结构模板(5):字符串

dream/ 十月 8, 2018/ C/C++, 数据结构实现/ 0评论

字符串的实现借助于动态数组。到动态数组实现的链接。

字符串在动态数组的基础上,增加了从C风格的字符串(即以’\0’结尾的字符数组)构造和追加的相关函数,隐藏并重新实现了print函数,重载了<<运算符以使字符串能够直接输出到标准输出流。

具体实现:

#ifndef DTS_ST[......]

阅读全文

自己动手实现数据结构模板(4):动态数组

dream/ 十月 8, 2018/ C/C++, 数据结构实现/ 0评论

实现了动态增长空间的数组。当数组原空间不足以存储增加的内容时,会重新开辟数组空间并将数据移动到新空间。默认的增长速度为 原空间*2+1 ,再额外+1是为了防止空数组增长出现一直为空的情况(0*2=0)。

该动态数组实现了常用的接口函数(如size,at,append等),重载了可能常用的运算符[……]

阅读全文