overflow

VC++中出现stack overflow错误时修改VC++的默认堆栈大小

旧城冷巷雨未停 提交于 2020-03-31 03:53:28
  VC++中,在栈空间上申请存储的结构体或者类对象的数组空间时,如果数组长度过大,造成申请的栈空间超过或者逼近1MB时,程序可以编译通过,但是不能够执行起来。打到调试模式时会弹出如下图所示的栈空间越界错误对话框。 如下面的类定义: class Character { public: Character() { x0 = 0; y0 = 0; x1 = 0; y1 = 0; offsetX = 0; offsetY = 0; } unsigned int x0:10; unsigned int y0:10; unsigned int x1:10; unsigned int y1:10; unsigned int offsetX:8; unsigned int offsetY:8; unsigned int texIndex:8; };   而FreeTypeFont类中申请了65536个Character 类数组,如下代码: class FreeTypeFont { public: FT_Library _library; FT_Face _face; unsigned _sysFontTexture; Character _character[1<<16];    int _textureWidth; int _textureHeight; //! 临时变量

stack overflow错误分析

為{幸葍}努か 提交于 2020-03-31 03:52:23
stack overflow(堆栈溢出)就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据。 或者解释为 在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自编的代码了。 比如如下这段程序: #include<stdio.h> int main() { char name[8]; printf("Please type your name:"); gets(name); printf("Hello.%s!",name); return 0; } 编译并且执行,输入ipxodiAAAAAAAAAAAAAAAA,执行完gets(name)之后,堆栈如下: 内存底部 内存顶部 name EBP ret <-------[ipxodiAA][AAAA][AAAA]............ ^&name 堆栈顶部 堆栈顶部 由于我们输入的name字符串太长,name数组容纳不下,只好向内存顶部继续写'A'。由于堆栈的生长方向与内存的生长方向相反,这些'A’覆盖了堆栈的老的元素。 'EBP ret’都被'A'覆盖了。在main返回的时候,就会把'AAAA'的ASCII码:0x41414141作为返回地址,CPU会试图执行0x41414141处的指令,结果出现错误。这就是一次堆栈溢出!

文字超出隐藏

让人想犯罪 __ 提交于 2020-03-30 17:20:11
(1).文字超出一行,省略超出部分,显示’…’ 如果这种情况比较多,可以取一个切合作用的类名用于复用。 .line-limit-length { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; //文本不换行,这样超出一行的部分被截取,显示... } <div class="item"> <p class="line-limit-length">最新消息:神秘地球黑洞深不可测,不停吸入周围海水。</p> <i class="icon icon-arrow-Go"></i> //图标字体 </div> (2). 可以给定容器宽度限制,超出部分省略 .product-buyer-name { max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 3、html文字超过两行或三行就显示省略号 .p1{ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }   转载自https://blog.csdn.net

那些年我们一起清除过的浮动

与世无争的帅哥 提交于 2020-03-27 05:53:43
浮动(float),一个我们即爱又恨的属性。爱,因为通过浮动,我们能很方便地布局; 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器)。也许很多人都有这样的疑问, 浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么? 本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手。 一、清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)? 很多人都已经习惯称之为清除浮动,以前我也一直这么叫着,但是确切地来说是不准确的。我们应该用严谨的态度来对待代码,也能更好地帮助我们理解开头的三个问题。 1)清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left | right | both | none; 2)闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。 两者的区别 请看优雅的 Dem o 通过以上实例发现,其实我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,在footer上设置clear:both清除浮动并不能解决warp高度塌陷的问题。 结论:用闭合浮动比清除浮动更加严谨,所以后文中统一称之为:闭合浮动。 二、为何要闭合浮动? 要解答这个问题,我们得先说说CSS中的定位机制:普通流,浮动,绝对定位 (其中

那些年我们一起清除过的浮动

人走茶凉 提交于 2020-03-27 05:45:56
浮动(float),一个我们即爱又恨的属性。爱,因为通过浮动,我们能很方便地布局; 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器)。也许很多人都有这样的疑问, 浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么? 本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手。 一、清除浮动 还是 闭合浮动 (Enclosing float or Clearing float)? 很多人都已经习惯称之为清除浮动,以前我也一直这么叫着,但是确切地来说是不准确的。我们应该用严谨的态度来对待代码,也能更好地帮助我们理解开头的三个问题。 1)清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left | right | both | none; 2)闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。 通过以上实例发现,其实我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,在footer上设置clear:both清除浮动并不能解决warp高度塌陷的问题。 结论:用闭合浮动比清除浮动更加严谨,所以后文中统一称之为:闭合浮动。 二、为何要清除浮动? 要解答这个问题,我们得先说说CSS中的定位机制:普通流,浮动,绝对定位 (其中"position:fixed" 是

盒模型之display和overflow(*****)

给你一囗甜甜゛ 提交于 2020-03-26 06:39:07
display: <!DOCTYPE html> <html lang="zh-cn"> <head>   <meta charset="UTF-8">   <title>display</title>   <!-- 默认值 --> <style type="text/css">   /*块:1.独行显示 2.支持宽高,宽默认适应父级,高默认由子级或内容撑开 3.设置宽高后,一定采用设置的宽高*/   /*内联:1.同行显示 2.不支持宽高*/   /*内联块:1.同行显示,之间有间距 2.支持宽高,宽高由内容撑开 3.设置宽高后,一定采用设置的宽高,但只设置其中一个,另一个会根据内容等比缩放*/   /*嵌套规则:*/   /*块可以嵌套所有类型(p一般只允许嵌套内联)*/   /*内联一般只嵌套内联*/   /*内联块一般只作为最内层级*/   div {   /*块*/   display: block;   /*自适应父级可用content的宽度*/   /*width: auto;*/   /*默认0*/   /*height: 0px;*/   }   span {   /*内联*/   display: inline;   /*不支持宽高*/   }   img {   /*内联块*/   display: inline-block;   width: auto;  

左栏固定,右栏自适应的两栏布局

偶尔善良 提交于 2020-03-25 22:55:53
第一种方法:采用绝对定位+BFC(overflow:auto) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .left{ width: 200px; height: 200px; background: red; position: absolute; } .right{ height: 200px; margin-left: 200px; background: blue; overflow: auto; } </style> </head> <body> <div class="left">左边</div> <div class="right">右边</div> </body> </html> 第二种方法:采用左浮动+BFC (overflow:auto) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .left{ width: 200px; height: 200px;

CSS3 文本换行

不羁的心 提交于 2020-03-25 22:27:18
文本换行其实是个非常常用但并不起眼的特性。你什么都不用设,浏览器自动就会换行。例如英语,浏览器会根据容器尺寸,选择在半角空格或连字符处换行。例如中文,浏览器会选择在文字或标点符号处换行。但有时遇到长单词或URL浏览器就没这么智能了,会出现撑破容器的现象,很难看,如下图 容器定宽150px的前提下,普通文字如左图浏览器足以胜任自动换行,右图遇见长单词或URL,浏览器就力不从心了。当然,你能为容器设置overflow:auto;,让滚动条出现,以避免撑破容器。或干脆overflow:hidden;让超出部分隐藏,见下图 但总感觉overflow不太理想,应该有换行专用的属性。本篇就介绍一下3种换行的属性 word-wrap word-break white-space word-wrap word-wrap能实现断词换行。可设normal,break-word。默认值normal等于没设,不赘述。break-word允许断词换行。如右图设了word-wrap: break-word;后,浏览器的执行过程:发现长单词显示不下,根据默认的换行规则,用半角空格换行,因此Ooops too后面空出了一段空白,长单词移到第二行发现仍旧显示不下,于是断词换行,长单词和URL因此被中间截断。 word-break word-break可以设置浏览器自动换行的方式。可设normal,break-all

BFC(block formatting context)

依然范特西╮ 提交于 2020-03-25 17:48:02
BFC(block formatting context):块级格式化上下文 触发BFC: 1.根元素 2.float; 3.overflow:auto,scroll,hidden; 4.display:table-cell、table-caption、inline-block、flex、inline-flex; 5.position:absolute、fixed; 注: 一、没有父级的元素为根元素 二、浮动会触发BFC 三、overflow 属性规定当内容溢出元素框时发生的事情: overflow:hidden;1.子集margin-top把父级一起往下带;2.子级浮动导致高度塌陷,可以自动找回高度;3.子级超出父级容器范围 overflow:scroll;多用于留言板类型 来源: https://www.cnblogs.com/YYouyang/p/7470717.html

margin折叠及hasLayout && Block Formatting Contexts

流过昼夜 提交于 2020-03-25 17:17:48
margin折叠的产生有几个条件: 这些margin都处于普通流中,并在同一个BFC中; 这些margin没有被非空内容、padding、border 或 clear 分隔开; 这些margin在垂直方向上是毗邻的,包括以下几种情况: 1、一个box的top margin与第一个子box的top margin 2、一个box的bottom margin与最后一个子box的bottom margin,但须在该box的height 为auto的情况下 3、一个box的bottom margin与紧接着的下一个box的top margin 4、一个box的top margin与其自身的bottom margin,但须满足没创建BFC、零min-height、零或者“auto”的height、没有普通流的子box 垂直方向上毗邻的box不会发生折叠的情况: 根元素的外边距不会参与折叠 一个有clearance的box的上下margin毗邻,它会与紧接着的下一个box发生margin折叠,但折叠后的margin不会再与它们父box的bottom margin折叠 折叠边距的计算 当两个margin都是正值的时候,取两者的最大值;当 margin 都是负值的时候,取的是其中绝对值较大的,然后,从 0 位置,负向位移;当有正有负的时候,先取出负 margin 中绝对值中最大的,然后,和正