C/C++
文章平均质量分 77
wensishuai
这个作者很懒,什么都没留下…
展开
-
new和malloc的区别和联系
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4、new 和 malloc效率比较new 有三个字母, malloc有六个字母new可以认为是malloc加构造函数的执行。new出来的指针是直接带原创 2011-05-17 20:45:00 · 569 阅读 · 0 评论 -
理解C++的多态原理及实现
<br />面试时经常被问到一连串的问题:<br />1、什么是多态性?<br />2、多态性的原理(多态是怎么实现的)?<br />3、用C语言实现多态(写代码)。<br />首先,我们来研究一下C++面向对象的内存模型,也就是实现虚函数时类的存储结构。<br />1. 用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 <br />2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。 虚表是 和类对应的,虚表指针是和对象对应的。 <br />3原创 2011-05-25 15:23:00 · 1417 阅读 · 0 评论 -
linux下调试方法记录
1、segment faultsegment fault是几乎多有C程序员都会碰到的问题,多为内存问题,因为glibc库中基本所有的函数都默认形参指针是非空的,这样以下原因就可能导致段错误:(1)引用一个包含非法值的指针(当然包括空指针)。(2)未得到正确的权限的时候进行访问,例如往只读的内存地址写数据。(3)内存越界(数组越界,变量类型不一致等)调试segment fault原创 2012-12-25 16:26:18 · 674 阅读 · 0 评论 -
SSE指令集入门
Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。Visual Studio .NET 2003提供了对SSE指令集的编程支持,从而允许用户在C++代码中不用编写汇编代码就可直接使用SSE指令的功能。MSDN中有关SSE技术的主题[1]有可能会使不熟悉使用SSE汇编指令编程的初学者感到困惑,但是在阅读MSDN有关原创 2012-12-26 16:07:29 · 5007 阅读 · 3 评论 -
Linux驱动学习(四)——高级字符设备驱动程序
LDD第二章到第六章的综合复习。用循环缓冲区实现一个FIFO,支持多个reader和writer,利用信号量在竞态下保护数据区域,并且在无数据的时候阻塞读,数据满的时候阻塞写,可以通过ioctl返回FIFO状态。需要的技术:1、信号量:竞争与锁的机制。2、等待队列:进程的休眠与唤醒。用两种方式实现读写阻塞。3、poll:返回文件可读或者可写的状态,为select调用。4、i原创 2012-12-25 19:48:28 · 1010 阅读 · 0 评论 -
Linux驱动学习(一)——简单的hello模块
大概看了一遍LDD,从今天开始动手实践,下面给出linux内核模块开发入门的代码,helloworld。hello.c #include #include MODULE_LICENSE("Dual BSD/GPL");static int __init hello_init(){ printk(KERN_ALERT "Hello, kernel world\n"原创 2012-12-21 09:05:06 · 789 阅读 · 0 评论 -
Linux驱动学习(二)——字符设备驱动程序入门 .
linux下,在应用程序看来,对设备的操作其实就是对文件的操作,利用open,read,write,close等函数进行控制和IO。对于一个字符设备驱动模块,有几个关键结构体:1、struct file_operations:在设备编号和驱动程序操作之间建立连接2、struct file: file结构代表着一个打开的文件,由内核在open时创建,并传递给在该文件上操作的所有函数(如r原创 2012-12-21 14:23:05 · 947 阅读 · 0 评论 -
USRP2 LTE Transceiver设计
1. 代码架构top_levelrunTransceiver.cpp初始化设备对象,radio接口以及transceiver对象,启动trx相关线程 transceiverTransceiver.h/cpp TRX层,主要实现收发控制功能和对上层协议栈的接口,共分为四个线程:mReceiveFIFOServiceLoopThread负责驱动USRP接收,并将数据存入原创 2013-02-25 10:47:26 · 2795 阅读 · 3 评论