面试题目

2019-08-23  本文已影响0人  动感新势力fan
     Line::Line(const Line &obj){  // &obj是对象line的一个引用,用这个对象的引用来初始化另一个对象
        cout << "调用拷贝构造函数,并为指针ptr分配内存" << endl;
        ptr = new int;
        *ptr = *obj.ptr;  // 拷贝值
    }
  #include <iostream>
#include <vector>
using namespace std;
int main()
{ 
   vector<int> v;
   for(int i = 0; i < 10; i++){
       v.push_back(i);
   }
   auto it = v.begin();
   while(it != v.end()){
       if(*it == 1){
           it = v.erase(it);
       }
       else it++;
   }
   for(int i = 0; i < v.size(); i++){
       cout << v[i] << endl;
   }
   return 0;
}

可以通过connect的第五个参数进行控制信号槽执行时所在的线程

connect有几种连接方式,直接连接和队列连接、自动连接

直接连接:信号槽在信号发出者所在的线程中执行

队列连接:信号在信号发出者所在的线程中执行,槽函数在信号接收者所在的线程中执行

自动连接:多线程时为队列连接函数,单线程时为直接连接函数

a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)

b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的

c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的

d. 文件等公用资源 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

独享的资源有

a. 栈 栈是独享的

b. 寄存器

上一篇下一篇

猜你喜欢

热点阅读