现象:程序崩溃的地方比较随机,之前没问题的代码, 可能直接奔溃,多线程下其他地方堆栈被破坏,引起崩溃的时间是不定,所以在其他地方随机性奔溃 检测方法:使用windows工具gflags.exe 开启 gflags.exe –p /enable yourexecutable.exe /full 关闭 gflags.exe -p /disable yourexecutable.exe注释:上述命令需要在cmd中执行gflags.exe 不是内部命令:找到该程序 添加到系统环境变量下,或者用全路径,c…
1.内存泄露(内存超过系统允许的最大限制,11.4版本为2G) 2.脚本死循环 3.舞台内元件的大小超出了系统限制…
摘要: 本文主要对Windows内存管理中的堆管理技术进行讨论,并简要介绍了堆的创建.内存块的分配与再分配.堆的撤销以及new和delete操作符的使用等内容. 关键词: 堆:堆管理 1 引言 在大多数Windows应用程序设计中,都几乎不可避免的要对内存进行操作和管理.在进行大尺寸内存的动态分配时尤其显的重要.本文即主要对内存管理中的堆管理技术进行论述. 堆(Heap)实际是位于保留的虚拟地址空间中的一个区域.刚开始时,保留区域中的多数页面并没有被提交物理存储器.随着从堆中越来越多的进行内存分…
Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试. 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出. 2:释放检查(Heap Free Check)在释放堆块时进行检查,防止释放同一个堆块. 3:参数检查,对传递给堆的各种参数进行更多的检查. 4:调用时验证(Heap Validate On Call)HVC,每次调用堆函数时都对整个堆进行验证和检查. 5:堆块标记(Heap Tagging)为堆块…
实验环境:win764位旗舰版.VS2010旗舰版 每个进程都有一个默认堆,在进程初始化的时候会创建这个默认堆,可以通过GetProcessHeap()获取默认堆的句柄.使用CRT时,也会有一个CRT堆,VS项目属性 ~ C/C++ ~ 代码生成 ~ 运行库,如果选择多线程DLL,则CRT堆初始化在DLL中,如果选择多线程,则会在进入_tmain函数之前. 运行库连接方式设置: CRT堆初始化: 位于VS目录Microsoft Visual Studio 10.0\VC\crt\src\heap…
#include<iostream> #include<string> using namespace std; int main() { string st; cin>>st; int len; len=st.size(); int i; ;i>=;i--) cout<<st[i]; st[i]='\0'; system("pause"); ; } 栈上分配内存和回收都是自动的,不用程序员来处理堆上分配内存有系列的函数或操作符如c…
1 引言 在大多数Windows应用程序设计中,都几乎不可避免的要对内存进行操作和管理.在进行大尺寸内存的动态分配时尤其显的重要.本文即主要对内存管理中的堆管理技术进行论述. 堆(Heap)实际是位于保留的虚拟地址空间中的一个区域.刚开始时,保留区域中的多数页面并没有被提交物理存储器.随着从堆中越来越多的进行内存分配,堆管理器将逐渐把更多的物理存储器提交给堆.堆的物理存储器从系统页文件中分配,在释放时有专门的堆管理器负责对已占用物理存储器的回收.堆管理也是Windows提供的一种内存管理机制.主…
TLAB产生的原因 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据 由于对象实例的创建在JVM中非常频繁,因此在并发环境下从堆区中划分内存空间是线程不安全的 为避免多个线程操作同一地址,需要使用加锁等机制,进而影响分配速度 TLAB是什么 从内存模型而不是垃圾收集的角度,对Eden区域继续进行划分,JVM为每个线程分配了一个私有缓存区域,它包含在Eden空间内 多线程同时分配内存时,使用TLAB可以避免一系列的非线程安全问题,同时还能够提升内存分配的吞吐量,因此我们可以将这种内存分配方…
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素. 1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下: 任意一节点指针 i:父节点:i==0 ? null : (i-1)/2  左孩子:2*i + 1  右孩子:2*i + 2 2. 堆的定义:n个关键字序…
windows程序员进阶系列:<软件调试>之堆 (一) 堆是软件在运行时动态申请内存空间的主要途径.从堆上申请来的空间需要程序员自己申请和释放,且申请和释放操作必须绝对匹配.忘记释放或者多次释放可能会导致严重问题. 与栈类似,使用堆的过程中也会由于向堆中写入超过所申请堆大小的数据,覆盖堆上的其他内容,而导致堆溢出问题. 由于堆的特殊性,一旦堆被破坏将会导致一些严重的问题.由于如果对堆不够了解的话对于这些问题将会手足无措.本文将会详细的介绍堆的方方面面,通过以下几篇文章的讲解便可以很清晰的了解堆…
堆排序总结 这是排序,不是查找!!!查找去找二叉排序树等. 满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树. 构建顶堆: a.构造初始堆 b.从最后一层非叶节点开始调整,一直到根节点 c.如果还不满足,重复b操作,直到构建出一个大顶堆或小顶堆. 构建大顶堆:每次调整都是从父节点.左孩子节点.右孩子节点三者中选择最大者跟父节点进行交换. (重点)输出排序后的序列:一个大顶堆,获得最大值后, 1. 输出堆顶: 2. 将最后一个堆元素送入堆顶,堆被破坏: 3. 重新构建一个堆,此时,从堆顶开始…
Java实现堆排序(大根堆)   堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素. 1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下: 任意一节点指针 i:父节点:i==0 ? null : (i-1)/2  左孩子:2*i + 1  右孩子:2*i +…
关于longPressGesture做一个长按连加的效果 解释一下什么意思呢?就是一个button长按之后其数字的一直累加.朋友们可能看起来很简单,无非就是加一个长按手势(longPressGesture)呗.对想法是对的,确实就是加一个长按手势,那手势方法内部的实现怎么写呢?注意长按手势不是按多长时间就会调用多少次手势处理方法,一般情况下只会掉三次(我说的是正常的情况下),分别是:手势开始,手势改变,手势结束,那么要想进行累加,那么就需要在手势处理的方法里边循环调用累加的方法,接着你就会想到用…
这几天学习SURF特征检测,直接看的视频和书本有点吃不消,现在是基本看懂了,如果写博客记录没有必要,因为网上都差不多,笔记都在书上了,以下是个人认为比较浅显易懂的文章,当然海有很多好文章我没看到. 看第一篇入门就可以,后面讲的不是很好: http://blog.csdn.net/jwh_bupt/article/details/7621681 harris:    http://www.cnblogs.com/ronny/p/4009425.html Harr:  http://blog.csd…
开源播放器项目 kxmovie(https://github.com/kolyvan/kxmovie),现在仍然是很多刚开始接触播放器开发的程序员的参照范本.以下是我操作kxmovie项目的过程: (1)在桌面上建立一个目录,名称可以随便取,我的该目录名为 examples (2)打开Mac终端,执行命令 git clone git://github.com/kolyvan/kxmovie /Users/dev.temobi/Desktop/examples/kxmovie git://gith…
struct LINE { char securityID[32]; /*!< 证券代码 */ int64_t dateTime; /*!< 日期时间(日期变化)YYYYMMDDhhmmss */ double openPx; /*!< 开盘价 */ double highPx; /*!< 最高价 */ double lowPx; /*!< 最低价 */ double lastPx; /*!< 最新价 */ double avgPx; /*!< 均价 */ int…
1. Dam 2. 溃坝 3. 水坝对环境的影响 4. 水坝列表 4.1 黄河干流水电站列表 4.2 长江干流水电站列表 4.3 长江水系支流 431. 大渡河 432. 乌江 433. 雅砻江 434. 其他 4.4 湄公河-澜沧江 4.5 萨尔温江-怒江 4.6 珠江 4.7 其他河流 5. 相关链接 1. Dam https://en.wikipedia.org/wiki/Dam https://zh.wikipedia.org/wiki/水坝 水坝(英文:Dam)是建筑在溪流.河流和河口…
目录 | 上一节 (1.1 Python) | 下一节 (1.3 数字) 1.2 第一个程序 本节讨论有关如何创建一个程序.运行解释器和调试的基础知识. 运行 Python Python 程序始终在解释器中运行. 解释器是一个"基于控制台"的应用程序,通常从命令行 shell 启动. python3 Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) [GCC 4.2.1 (Apple Inc. build 5666) (do…
一.背景 网页开发,渲染线程和脚本是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应的原因,本质就是我们常说的 JS 是单线程的 而在小程序中,选择了 Hybrid 的渲染方式,将视图层和逻辑层是分开的,双线程同时运行,视图层的界面使用 WebView 进行渲染,逻辑层运行在 JSCore 中 渲染层:界面渲染相关的任务全都在 WebView 线程里执行.一个小程序存在多个界面,所以渲染层存在多个 WebView 线程 逻辑层:采用 JsCore 线程运行 JS 脚本,在这个环境下执行…
我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接:然后,两者就可以基于这个socket连接通信了.连接结束后,客户端(进程)会退出:在不需要继续处理客户请求的情况下,服务器(进程)也将退出.而且,当一个进程退出的时候,内核会关闭所有由这个进程打开的套接字,这里将触发TCP的四次挥手进而关闭一个socket连接.但是,在一些异常的情况下,譬如:服务器…
作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年多的时间了,对jQuery算是比较了解了,唯一没做到的就是读源码.网上看到有人写jQuery源码解析的,我也没细看,个人觉得如果光是为了解析源码而解析源码,未免有点太劳神了,没有实际用途,我更倾向于在实际应用中遇到不懂的方法或是文档说明不清楚的地方,可以查找到相应的位置看下源码,足矣. 闲话不多讲了,今天的主…
jQuery中的事件监听方式及异同点 作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年多的时间了,对jQuery算是比较了解了,唯一没做到的就是读源码.网上看到有人写jQuery源码解析的,我也没细看,个人觉得如果光是为了解析源码而解析源码,未免有点太劳神了,没有实际用途,我更倾向于在实际应用中遇到不懂的方法或是文档说明不清楚的地方,可以查找到相应的位置看…
基础无外乎几部分:语言(C/C++或java),操作系统,TCP/IP,数据结构与算法,再加上你所熟悉的领域.这里面其实有很多东西,各大面试宝典都有列举. 在这只列举了Android客户端所需要的和我面试中所遇到的知识点,尽量做到全面,如果你掌握了以下知识点,去面android客户端应该得心应手. J2SE基础 1. 九种基本数据类型的大小,以及他们的封装类. 2. Switch能否用string做参数? 3. equals与==的区别. 4. Object有哪些公用方法? 5. Java的四种…
相信大家都用过ATM取过money吧,但是有多少人真正是了解ATM的呢?相信除了ATM从业者外了解的人寥寥无几吧,鄙人作为一个从事ATM软件开发的伪专业人士就站在我的角度为大家揭开ATM的神秘面纱吧.以下纯属个人所知,如有错误概不负责.废话不多说,以下开扒: 1.ATM有没有可能出假钞?答:完全有可能,想必大家也从各种新闻上看到过有人从ATM取出假钱的报道吧,这种新闻对于我们ATM从业者来说早就不是啥新鲜事了.    要解释ATM为啥子会出假钞就要从ATM的分类开始了,广义的ATM一般分为三类:…
使用Java那么久,在此总结一下Java中常见的内存溢出问题以及对应的解决思路 堆溢出 报错信息 java.lang.OutOfMemoryError: Java heap space 报错原因 堆中(新生代和老年代)无法继续分配对象了: 某些对象的引用长期被持有没有被释放,垃圾回收器无法回收: 使用了大量的 Finalizer 对象,这些对象并不在 GC 的回收周期内. 解决办法 将堆内存 dump 下来,使用 MAT 分析一下,解决内存泄漏: 如果没有内存泄漏,使用 -Xmx 增大堆内存:…
WinDbg OllyDbg SoftICE (已经停止更新) 虽说WinDbg在无源码调试方面确实比较困难,但在调试内核方面却真的有独到之处. https://www.pediy.com/kssd/pediy10/94457.html 使用Windbg解析dump文件 1 常用的Windbg指令 ①!analyze -v ②kP 可以看函数的入参 ③!for_each_frame dv /t 可以看函数中的局部变量 ④dc , db 产看某一内存中的值 可以直接接变量名 不过可能需要回溯栈 ⑤…
/** * 系统环境: vm12 下的centos 7.2 * 当前安装版本: elasticsearch-2.4.0.tar.gz */ 安装和学习可参照官方文档: 1, 安装 # 下载, 获取不成功可直接从官网下载 curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.…
内存是计算机⾮常关键的部件之⼀,是暂时存储程序以及数据的空间,CPU只有有限的寄存器可以⽤于存储计算数据,⽽⼤部分的数据都是存储在内存中的,程序运⾏都是在内存中进⾏的.和CPU计算能⼒⼀样, 内存也是决定计算效率的⼀个关键部分. 计算中的资源中主要包含:CPU计算能⼒,内存资源以及I/O.现代计算机为了充分利⽤资源,⽽出现了多任务操作系统,通过进程调度来共享CPU计算资源,通过虚拟存储来分享内存存储能⼒. 本章的内存管理中不会介绍操作系统级别的虚拟存储技术,⽽是关注在应⽤层⾯:如何⾼效的利⽤有限…
调试的时候进行到delete语句时出现问题,我做的操作是在函数体内用int*申请了N个内存空间,这让我十分纳闷,为什么不能delete呢? 回忆到之前delete出错也遇过一次问题 手动封装OpenCV1.0的IplImage读取保存功能遇到的小问题 原因是申请内存并不是通过new操作,而是自带的函数(cvLoadImage),所以需要自带的函数(cvReleaseImage)来释放内存. 典型的错误信息:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 而这次错误信…
文字溢出处理有两种方式: 一.css overflow:hidden;            white-space: nowrap;            text-overflow: ellipsis; 二.js方法 控制字符个数,超出部分这不显示 以下为示例demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti…