-
浅谈返回函数内部new分配的内存的引用
所属栏目:[C语言] 日期:2020-12-14 热度:189
在bbs看到了一个帖子:为什么不能返回函数内部new分配的内存的引用? lz是这样问的: 按照这句话, stringreturn *str; } 非法的,为什么? 其实,不能说这是非法的,只能说这种u编程习惯很不好,这样很可能造成内存泄露。 后面还有个回复是这样的: struct[详细]
-
浅谈防不胜防的unsigned int的运算
所属栏目:[C语言] 日期:2020-12-14 热度:88
我很早之前就知道,unsigned int与int运算的时候,int会被转化为unsigned int来进行运算。一直觉得定这条规则的人是极度反人类的,虽说unsigned int可以表示更大的正值,但毕竟我们不太会把unsinged想像成一个负数,而一个负的int数可能在无意间就变成了最大[详细]
-
浅谈mwArray和一般数组的区别
所属栏目:[C语言] 日期:2020-12-14 热度:100
可以用下面的代码详细理解mwArray和一般数组之间的区别 mwArray a(3,2,mxDOUBLE_CLASS); double *aData; aData = new double[6]; int iii; for( iii=0; iii6; ++iii) { aData[iii] = iii+1; } // print output std::cout "a = " std::endl; std::cout aData[[详细]
-
关于STL的erase()陷阱-迭代器失效问题的总结
所属栏目:[C语言] 日期:2020-12-14 热度:136
下面材料整理自Internetlt; int List;std::list int::iterator itList;for( itList = List.begin(); itList != List.end(); ){ if( WillDelete( *itList) ) { itList = List.erase( itList); } else itList++;} 1.2 正确写法2 std::list int List;std::list[详细]
-
基于list循环删除元素,迭代器失效的问题详解
所属栏目:[C语言] 日期:2020-12-14 热度:95
问题的关键是: 在删除元素之前,将当前迭代器保存下来。当然,这里仅支持list,因为list的链式的删除一个元素,前面的指针指向下一个元素,vector和queue就不好办了,它们或者是线性的或者是半线性半链式,迭代器会失效 #includeiostream#includelistusing[详细]
-
浅谈stringstream 的.str()正确用法和清空操作
所属栏目:[C语言] 日期:2020-12-14 热度:163
streamstring在调用str()时,会返回临时的string对象。而因为是临时的对象,所以它在整个表达式结束后将会被析构。 如果需要进一步操作string对象,先把其值赋给一个string变量后再操作。 stringstream ss("01234567890123456789012345678901234567890123456[详细]
-
浅谈#ifndef,#define,#endif的作用和用法
所属栏目:[C语言] 日期:2020-12-14 热度:62
问题: ifndef/define/endif”主要目的是防止头文件的重复包含和编译 ======================================================== 用法: .h文件,如下: #ifndef XX_H #define XX_H ... #endif 这样如果有两个地方都包含这个头文件,就不会出现两次包含的情[详细]
-
循环队列详解及队列的顺序表示和实现
所属栏目:[C语言] 日期:2020-12-14 热度:147
循环队列――队列的顺序表示和实现 前面分析顺序队的时候,我们知道,顺序队存在”假溢出”的问题,这个问题有时会造成很大的内存浪费,循环队列就是为了解决这个问题而提出地一个很巧妙的办法.循环队列和顺序队列的主要区别在于:循环队列将顺序队列臆造成一个环[详细]
-
关于移位操作的一点重要说明
所属栏目:[C语言] 日期:2020-12-14 热度:170
我们有下面的测试代码: #include iostreamusing namespace std;int main(){ int num1=7; cout"num1(7)2: "(num12)endl; cout"num1(7)2: "(num12)endl; int num2=-7; cout"num2(-7)2: "(num22)endl; cout"num2(-7)1: "(num21)endl; cout"num2(-7)2: "(num22)e[详细]
-
stringstream操纵string的方法总结
所属栏目:[C语言] 日期:2020-12-14 热度:135
1 split字符串 之前在用C#写代码的时候,用过split函数,可以把一个字符串根据某个分隔符分成若干个字符串数组。在用C++操纵字符串的时候,我一直使用很笨的遍历的方法。为此,我问候过很多次C++标准委员会。直到某一天,我做了一个处理绝对路径的题目。 首[详细]
-
浅谈在函数中返回动态的内存
所属栏目:[C语言] 日期:2020-12-14 热度:160
1、有以下题目: #include iostreamusing namespace std;void GetMemeory(char* p){ p=(char*)malloc(sizeof(char)*100);}int main(){ char *str=NULL; GetMemeory(str); strcpy(str,"Thunder"); strcat(str,"Downloader"); printf(str); system("pause"); r[详细]
-
如何给MD5加上salt随机盐值
所属栏目:[C语言] 日期:2020-12-14 热度:50
如何加点盐(salt)? 为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字、字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的: 1).首先我们得到的是明文的hash[详细]
-
浅谈do {...} while (0) 在宏定义中的作用
所属栏目:[C语言] 日期:2020-12-14 热度:142
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。 下面[详细]
-
关于win32 gettimeofday替代方案
所属栏目:[C语言] 日期:2020-12-14 热度:200
来自nginx代码: voidngx_gettimeofday(struct timeval *tp){ uint64_t intervals; FILETIME ft; GetSystemTimeAsFileTime( /* * A file time is a 64-bit value that represents the number * of 100-nanosecond intervals that have elapsed since * Janua[详细]
-
实现一个内存池管理的类方法
所属栏目:[C语言] 日期:2020-12-14 热度:159
模拟STL中的freelist,有这个思想在内。 union obj{ union obj* next; char p[1]; };class MemoryPool{ public: MemoryPool() { union obj* temp; m_memory.assign(5,(union obj*)NULL); for(int i=0;im_memory.size();i++) { for(int j=0;jm_memory.size();j[详细]
-
一个string类的简单实现案例
所属栏目:[C语言] 日期:2020-12-14 热度:89
string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作 class String{public:String(){data = new char[1]; //这里为什么使用new char[1]呢,虽然是一个字符,这是为了和析构函数保持对称,因为在别的构[详细]
-
页面中加载优酷视频去掉广告的方法
所属栏目:[C语言] 日期:2020-12-14 热度:186
1.优酷视频去广告代码: embed src=" http://static.youku.com/v1.0.0149/v/swf/qplayer_rtmp.swfVideoIDS=你的视频IDisAutoPlay=true" quality="high" width="宽度" height="高度" align="middle" type="application/x-shockwave-flash"/embed 2.视频调整是[详细]
-
浅谈十进制小数和二进制小数之间的转换
所属栏目:[C语言] 日期:2020-12-14 热度:136
一、二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二、十进制数转换为二进制数 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以[详细]
-
浅谈带缓冲I/O 和不带缓冲I/O的区别与联系
所属栏目:[C语言] 日期:2020-12-14 热度:50
这里搜集从网上看到的一些言论,自认为还是比较靠谱的,有些不靠谱的根据自己的理解进行了修正。 首先要明白不带缓冲的概念: 所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用 。系统内核对磁盘的读写都会提供一个块缓冲(在[详细]
-
浅谈哈希表存储效率一般不超过50%的原因
所属栏目:[C语言] 日期:2020-12-14 热度:187
本文主要是讲"哈希表的存储效率一般不超过50%"的原因。 Hash Table 常用于频繁进行 key/value 模式的查找中。(查找模式,如匹配查找) 哈希表最大的优点在于查找速度快,但存储时可能发生collision(冲突)。 哈希表大多使用open addressing来解决collision,此[详细]
-
MySQL 设计和命令行模式下建立详解
所属栏目:[C语言] 日期:2020-12-14 热度:158
MySQL 设计和命令行模式下建立详解 系列文章: MySQL 设计和命令行模式下建立详解 C++利用MySQL API连接和操作数据库实例详解 1.数据表的设计 MySQL数据库管理系统(DBMS)中,包含的MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种[详细]
-
String类的写时拷贝实例
所属栏目:[C语言] 日期:2020-12-14 热度:174
实例如下: #includeiostreamusing namespace std; class String;ostreamlt;(ostream s);//引用计数器类class String_rep { friend class String; friend ostreamlt;(ostream s);public: String_rep(const char *str ) :use_count(0) { if (str == NULL) { d[详细]
-
12种最常用的网页编程语言简介(值得收藏)
所属栏目:[C语言] 日期:2020-12-14 热度:80
如今,随着网站的越来越普及,与Web相关的开发技术持续热门,从前端到后端,从标记语言到开发语言,各种技术交相辉映,沉沉浮浮,从开始简单的html到复杂的web开发语言asp、asp.net、php、jsp等等,在此,我就借助SEO马龙博客的平台跟大家简单的介绍一下常见[详细]
-
浅谈VS中添加头文件时显示无法找到文件的问题
所属栏目:[C语言] 日期:2020-12-14 热度:158
目录或库文件名中包含汉字或空格的话,请将其用半角双引号括[详细]
-
Qt如何设置窗口屏幕居中显示以及设置大小
所属栏目:[C语言] 日期:2020-12-14 热度:82
Qt如何设置窗口屏幕居中显示以及设置大小 设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include QDesktopWidget //.......QDesktopWidget* desktop = QApplication::desktop(); // =qApp-desktop();也可以move((desktop-[详细]