首页
学习
活动
专区
工具
TVP
发布

软件开发 -- 分享 互助 成长

专栏作者
173
文章
227550
阅读量
44
订阅数
malloc函数分配内存失败的常见原因
malloc()函数分配内存失败的常见原因: 1. 内存不足。 2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏。下次再使用malloc()函数申请内存就会失败,返回空指针NULL(0)。
用户1215536
2019-07-16
4.7K0
C++ 之虚函数的实现原理
c++的多态使用虚函数实现,通过“晚绑定”,使程序在运行的时候,根据对象的类型去执行对应的虚函数。
用户1215536
2019-05-25
1.5K0
目录1.智能指针的作用2.智能指针的使用3.智能指针的设计和实现
C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。
用户1215536
2019-05-25
1.4K0
01背包及其变种(物品无限背包、恰好装满背包)
一、01背包问题   01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,…,Cn,与之相对应的价值为W1,W2,…,Wn.求解将那些物品装入背包可使总价值最大。   动态
用户1215536
2018-02-05
4.3K0
带有头结点的链表的基本操作
#ifndef _LIST_h_ #define _LIST_h_ //链表中的数据结构 typedef struct Link_data { int a; int b; }Node_data; //链表节点结构 typedef struct Link_node { Node_data data; struct Link_node *pNext; }Node; Node* CreateList(void); Node* FindNodeByGloba
用户1215536
2018-02-05
7090
函数指针
前言: 先看两个基础,函数指针和extern关键字,然后由一个具体的例子,具体使用下函数指针。 一、基础 函数指针:即指向函数的指针,本质还是一个指针。 函数指针的声明:返回值类型 ( * 指针变量名
用户1215536
2018-02-05
9980
source insigt、pc-lint、VS联合使用
前言:     近几天参加公司培训,公司要求,开发的时候使用source insight、PC-lint和VC来编程和调试,这不用不知道,一用吓一跳,这套工具一组合简直爽的根本停不下来。 先说一下各自的作用,source insight主要用于编辑和浏览代码,编写代码的时候它有大量的提示,就像使用了搜狗输入法一般,还有很重要的是把鼠标往一个变量上面一停,下面的上下文窗口就把它的相关定义显示出来了,对于包含大量结构体的复杂系统来说,非常方便,当然还有其他好多优点。然后,是PC-lint,这个是一个静态检查工具
用户1215536
2018-02-05
1.8K0
谈谈map中的count方法
map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,因此count()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。 拿map<key,value>举例,find()方法返回值是一个迭代器,成功返回迭代器指向要查找的元素,失败返回的迭代器指向end。count()方法返回值是一个整数,1表示有这个元素,0表示没有这个元素。 #include<iostream> #include<map> #include<string> usin
用户1215536
2018-02-05
8690
多维数组的理解
要清楚的理解多维数组,需要先理解指针的算术运算和数组名的含义。 1、指针的算术运算     指针的算术运算与普通的类型的算术运算是不同的,编译器会在指针的算术运算的过程中自动乘以sizeof(type),如int p=1;p=p+2;则p=3;而int *p; (假如p指向的初始地址位2000),那么p=p+2;实际上指向的是2000+2*sizeof(int),32位系统下的结果为2008。 2、多维数组名字的理解     对于数组名大家都知道可以理解为指针,可究竟这个指针指向的内容是什么呢?这个我没法直
用户1215536
2018-02-05
2.3K0
链表的相关操作
#include<iostream> using namespace std; struct node { int data; node *next; }; //链表的建立,创建有n个结点的链表 node *create(int n) { node *head=NULL; node *p=NULL; head=new node(); p=head; cin>>p->data; node *q; while(--n) {
用户1215536
2018-02-05
5170
谈谈 char *num="123";和char num[4]="123";的区别
最近写程序的时候发现这样一个问题 #include<iostream> #include <string.h> using namespace std; void reverse(char *str) { int len=strlen(str); char *p=str; char *q=str+len-1; while(p<q) { char temp=*p; *p=*q; *q=temp; p++;
用户1215536
2018-02-05
1.2K0
注意map<> 的[]
其实在之前一篇关于map的基本操作中已经提到过注意[]操作,这里再强调一下。 先看下面的程序: #include<iostream> #include<map> using namespace std; int main() { map<int,int>nums; nums[6]++; nums[3]+=5; if(0==nums[4]) { cout<<"key为4对应的value为0"<<endl; } map<int,int>::
用户1215536
2018-02-05
3850
C++ STL 中erase()的使用需要小心
C++ STL极大的方便了用户编写程序,但是同时一不小心也会犯一些错误,如erase()造成迭代器失效经常会引起错误。 错误示例: std::list< int> List; std::list< int>::iterator it; for( it = List.begin(); it != List.end(); it++) { if( it符合删除条件 ) { List.era
用户1215536
2018-02-05
2.1K0
C/C++中static关键词的作用
1、在函数体内的static变量作用范围是该函数体,其只被内存分配一次,所以在下次调用的时候会保持上一次的值。 2、模块内的static全局变量可以被模块内的所有函数访问,但不能被模块外的函数访问。 3、模块内的static函数可以被模块内的其他函数访问,但不能被模块外的函数访问。 4、类中的static成员变量属于整个类所拥有,类的所有对象只有一份拷贝。 5、类中的static成员函数属于整个类,这个函数不接受this指针,因而只能访问类的static成员变量。
用户1215536
2018-02-05
5310
最长单调递增子序列
动态规划问题: 令dp[i]表示:在str[0-i]中,当以str[i]为单调递增子序列最后一个元素时,所得最长单调递增子序列的长度。 递推式: dp[0]=1(第一个字符自己也为递增序列 ) 当0<=k<=i时,if(str[k]<=str[i]) max{dp[k]}+1(从第k个字符开始,现在0-k-1个字符中找到比k字符小的字符,然后在它们之中找到一个最大的,然后此值加1即为dp[i]) dp[i]表示从零到i为原序列的最长子序列的值。 #include<iostream> #include<alg
用户1215536
2018-02-05
8320
迷宫问题(bfs的应用)
问题描述: 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示:  int maze[5][5] = {         0, 1, 0, 0, 0,         0, 1, 0, 1, 0,         0, 0, 0, 0, 0,         0, 1, 1, 1, 0,         0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。入口点
用户1215536
2018-02-05
6490
C++ 字符串分割
    java和C#中字符串都可以使用split进行分割,但是C++中却没有这个方法,之前总是自己写一个函数自己进行分割,倒也不麻烦,今天在网上找了类似的函数,发现strtoc()似乎可以完成字符串的分割功能。 原型:char *strtok(char s[], const char *delim); 用法:分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则以首字符为分割标准)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 至于为啥之后要把s置成NU
用户1215536
2018-02-05
1.6K0
string.length()与-1比较为什么会出现匪夷所思的结果
今天调试程序发现了个匪夷所思的事情,-1与string.length()比较永远是-1大,看下面代码 #include<iostream> #include<string> using namespace std; int main() { string str; str="123"; int num=-1; //int len=str.length(); if(num<str.length()) { cout<<"-1<str.length(
用户1215536
2018-02-05
7070
字符串处理时刻提醒自己要在末尾手动加'\0'
话不多说,大家都明白字符串是以'\0'为结尾的,但偏偏今天编程序的时候忘了添加'\0'了,结果浪费时间调试一番才发现,囧死了。 先通过一段代码看看,忘记加'\0'会造成哪些难以发现的麻烦吧 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 char *p; 7 char *q="ab"; 8 p=new char[2]; 9 cout<<strl
用户1215536
2018-02-05
1.3K0
图的遍历算法
前言:学习图的遍历算法之前,需要先了解一下图的存储方式(这里只以无向图作为讨论了)。 (1)邻接矩阵 (2)邻接表 一、DFS(深度优先遍历)  设置一个visited数组防止重复遍历,DFS主要利用
用户1215536
2018-02-05
9630
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档