小编Sur*_*uri的帖子

如何开始学习linux设备驱动程序开发?(仅适用于Windows)

我想学习Linux设备驱动程序开发.

正面:

  1. 我在WinCE上开发了小型驱动程序,并从应用程序开始工作SPI,i2c接口,即打开,读取和写入驱动程序.
  2. 我擅长操作系统和数据结构.

劣势:

  1. 我从未在Linux上工作过.
  2. 我的背景不是嵌入式系统.

我该如何继续学习Linux设备驱动程序开发?

编辑:任何书籍参考将是值得感谢的

linux-device-driver linux-kernel

3
推荐指数
1
解决办法
4983
查看次数

是帧数=页数(linux)?

我正在研究linux设备驱动程序,发现页数等于帧数.每个页面都映射到每个帧.它说每当程序需要内存时它会分配页面.

但在OS书籍中,我发现虚拟地址分为页面,这些页面被加载到帧中.那么页面数量如何等于帧?

以上哪项是正确的?linux如何在页表中存储关于虚拟,页面,帧映射的信息?

我完全糊涂了.

linux paging linux-kernel virtual-address-space

3
推荐指数
1
解决办法
6651
查看次数

传递指针不起作用

#include"iostream"
class CMessage
{
public:int a;
       CMessage(){}
       ~CMessage(){}
};
void Testing(CMessage *f_pMessage)//l_pMessage is output parameter
{
    f_pMessage = new CMessage();
    f_pMessage->a = 1;
}
int main()
{
    CMessage *l_pMessage =NULL;
    Testing(l_pMessage);
    std::cout<<l_pMessage->a;//getting l_pMessage = NULL;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我调用测试时,内部测试f_pMessage正在初始化但是在我激活测试函数后,它应该存储在l_Pmessage中,但它显示为NULL.confussed .....

c++

2
推荐指数
2
解决办法
175
查看次数

为什么增加指针崩溃指向的数据?

可能重复:
C/C++ Char指针崩溃

char *p = "atl";
char c;
c = ++*p; //crashing here
Run Code Online (Sandbox Code Playgroud)

为什么会崩溃?

我知道不应该为数据创建指针增量的内存.

c++ visual-c++

2
推荐指数
1
解决办法
989
查看次数

为什么派生类析构函数被调用,即使基类析构函数不是虚拟的,如果将对象创建为引用

#include <iostream>
class Database
{
public:
   Database()
   {
      std::clog << "Database object created " <<std::endl ;
   }
   ~Database()
   {
      std::clog << "Database object destroyed " << std::endl;
   }
   virtual void Open(const std::string & ) = 0 ; 
} ;

class SqlServer : public Database
{
public:
   void Open(const std::string & conn)
   {
       std::clog << "Attempting to open the connection "<< std::endl ;
   }

   ~SqlServer()
   {
        std::clog << "SqlServer:Database object destroyed "<< std::endl ;
   }
} ;
int main()
{
   Database …
Run Code Online (Sandbox Code Playgroud)

c++ virtual reference visual-c++

2
推荐指数
1
解决办法
168
查看次数

哪种方法是更快的向量(插入然后排序)或集合?

我有一个数字序列(未排序,没有重复),目标是对它们进行排序。

方法一:插入载体。O(n),使用排序算法和排序。O(nlogn)

方法二:插入集合。o(nlogn)

哪种方法会更快?

我觉得 set 会更快,因为 vector 中的每个插入都必须分配完整的数组元素并复制它然后删除它,这可能很昂贵。但是我通过网络阅读了大部分位置向量都已设置。

谁能建议我用正确的逻辑哪个更快?

编辑:如果我们事先不知道元素的数量,哪一个会更快设置或向量(因为元素的数量都是小而元素的数量不是大的?注意:如果元素的数量不是大的集合是更好的选择似乎但它对小也有好处吗?不知道)

c++ performance stl

2
推荐指数
1
解决办法
3255
查看次数

c ++中"some"=="some\0"和strcmp("some","some\0")有什么区别?

"some" == "some\0"strcmp("some","some\0")c ++ 之间有什么区别 ?

为何if("some" == "some\0")返回falseif(!strcmp("some","some\0"))返回true

c++ string comparison

1
推荐指数
2
解决办法
416
查看次数

如果使用unsigned,为什么重载会导致模糊调用?

void foo(int,int) {}
void foo(int ,float) {}
void foo(float,int) {}

void main()
{
  unsigned int i = 10;
  unsigned float f = 1.0;       //line 5
  foo(i,f); // ambiguous call error
}
Run Code Online (Sandbox Code Playgroud)

替换第5行

float f = 1.0;
Run Code Online (Sandbox Code Playgroud)

使程序工作.为什么会这样?

我正在开发visual studio 2005.

c++ visual-c++

1
推荐指数
1
解决办法
948
查看次数

在3个数组中的每个数组中找到3个元素,它们总和为给定值

设A,B,C为3个n元素阵列.是否存在一个找到用于确定算法a中A,bB中,c用C,使得a+b+c = k.

我尝试了以下算法,但它需要O(n²):

  1. 排序所有3个数组. - O(n log n)

  2. 临时阵列h = k - (a+b)-O(n)

  3. 对于每一个h,c'在B中找到这样的c' = h - B[i]-O(n)

  4. 搜索c'使用二进制搜索Ç -O(log n)

总计= O(n log n) + O(n) + O(n² log n)

我们能解决O(n log n)吗?

algorithm sum

1
推荐指数
1
解决办法
1413
查看次数

代码没有编译

//cstack.h
# ifndef _STACK_H__
#define _STACK_H__

#include<iostream>
#include<vector>

template< class Type ,int Size = 3>
class cStack
{
 Type *m_array;
 int m_Top;
 int m_Size;

public:
    cStack();
    cStack(const Type&);
    cStack(const cStack<Type,Size> &);
    int GetTop()const;
    bool Is_Full()const;
    bool Is_Empty()const;
    void InsertValue(const Type&);
    void RemeoveValue();
    void show();  
    ~cStack();
    friend std::ostream& operator <<(std::ostream &, const cStack<Type,Size> &);
};

// iam writing only one function defination because linking is because of this function
template< class Type,int Size >
std::ostream& operator << ( std::ostream &os, const …
Run Code Online (Sandbox Code Playgroud)

c++ linker-errors

0
推荐指数
1
解决办法
2408
查看次数

下面的代码完美地编译,但显示运行时错误.为什么?

//sample.h

int calci(int &value)
{
   if(value < 20)
    throw value;
   else
     return value;
}

class XYZ
{
   int m_x;
   public: XYZ(int &x)try:m_x(x-calci(x))
          {
          }catch (int &a)
          {}

};
class ABC
{
   int m_a;
   public: ABC():m_a(0)
   {
   }
    void foo()
    {
        XYZ xyz(10);


    }
};




int main()
{
   ABC abc;
   abc.foo();
}
Run Code Online (Sandbox Code Playgroud)

//如果我用以下代码替换foo(),那么它运行良好

void foo()
{
  try{
    XYZ xyz(10);
  }catch(...){}
}
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling

0
推荐指数
1
解决办法
63
查看次数