c/c++
yes_I_am
这个作者很懒,什么都没留下…
展开
-
关于c++顺序容器小结(二)---基本操作
各个容器都包含在自己的头文件中 构造:V v1; V v2(v1); V v1={a,b,c,d….}; 操作(所有容器的基本操作): v1.size();返回容器大小; swap(v1,v2)交换容器元素//仅当元素类型一致是才可交换 v1.swap(v2);交换v1,v2的元素;原创 2015-11-09 21:45:58 · 399 阅读 · 0 评论 -
关于c++顺序容器小结(一)---概述
最近又再啃c++11primer,不停一遍又一遍啃也不是办法,就总结一下。 什么是顺序容器:所谓容器就一些特定数据类型对象的集合,就像家里装东西的箱子一样吧它们装在一起便于管理。而顺序容器就是提供控制元素的存储和访问顺序,通俗的说就是可以按照顺序把东西放到箱子里,而取的时候也可以按照顺序去拿。 顺序容器的种类: vector(可变数组),deque(双端队列支持原创 2015-11-09 17:24:04 · 516 阅读 · 0 评论 -
c++避免内存泄漏
在c/c++语言对于程序内存的管理不像java语言一样有自己的垃圾回收机制,而c/c++却要程序员手动的释放用关键字new或者 malloc系统函数申请的内存空间,然而由于程序员的疏忽可能会忘记去手动释放内存,这样就导致了程序内存的泄漏。在c/c++的程序内存分配中,自顶向下分为代码段,数据段,栈区,栈保留区,动态链接库区,堆保留区,堆区。程序栈内存有系统管理,栈上的数据生命周期结束时系统原创 2016-04-18 22:09:19 · 2443 阅读 · 0 评论 -
一个栈数据越界的小例子
前段时间,有个学妹跑过来找我,学长,我的程序出了bug,找不出来,你帮我看看吧。去了之后看到她的代码是这样写的(我只写出主要出问题的代码):struct stu{ char name[10]; char passwd[10];};//定义了一个结构体,成员变量为两个char数组;//她在某个函数方法内是这样写的int i;struct stu st;for(i=0;i<10;原创 2016-07-23 12:08:44 · 1800 阅读 · 0 评论 -
linux与windows栈内存分配区别
同样的一段代码#include<stdio.h>int main(int argc, char **argv){ int i; int a[5]; for(i=0;i<6;i++) a[i]=0; printf("hello word"); return 0;}在linux和windows上运行的结果是不同的。在windows上由于数组越界导致for进入死循环而没有原创 2016-07-23 17:31:06 · 2774 阅读 · 1 评论 -
多线程与线程同步
线程概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程原创 2016-07-25 16:28:52 · 818 阅读 · 1 评论 -
C++ 堆栈
此处所讨论的堆栈不同于数据结构中的堆栈,在数据结构中存在堆和栈的概念,栈是一种先进后出的数据结构,堆则是一种排序方式,而在内存分配中也存在堆(heap)和栈(stack)的概念,与数据结构中的概念不同,这里简单说明在内存分配中的堆栈之间的不同。在这之前先看一下程序在运行时内存的分配图 图片来自于网络 一、内存分配方式 1、全局变量(extern变量)和所有静态变量(static变量),是由原创 2016-07-17 10:18:41 · 788 阅读 · 0 评论