首页 / C++ / c++编程之内存模型
c++编程之内存模型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++编程之内存模型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1897字,纯文字阅读大概需要3分钟。
内容图文
我们在编程的时候,无可避免要申明变量,在这个变量可以是在()中,可以在{}中,也可以直接在外面,也可以用new的方式.那么当我们在申明变量的时候,实质上我们所做的工作是:关联了一个内存模型!
上代码:
1 #include <iostream> 2 #include <thread> 3 #include <chrono> 4 #include <mutex> 5 # include<string> 6 using namespace std; 7 mutex mtx; 8 void fn1() 9 { 10 for (int i = 0; i < 5; i++) 11 { 12 unique_lock<mutex> lock(mtx); 13 cout << "线程" << this_thread::get_id() << ":" << "The thread1 is running !" << endl; 14 } 15 } 16 17 void fn2() 18 { 19 for (int i = 0; i < 5; i++) 20 { 21 unique_lock<mutex> lock(mtx); 22 cout << "线程" << this_thread::get_id() << ":" << "The thread2 is running !" << endl; 23 } 24 } 25 26 27 class fun{ 28 private: 29 string name; 30 int age; 31 public: 32 fun(){}; 33 fun(string name, int age) 34 { 35 this->name = name; 36 this->age = age; 37 } 38 void ShowName() 39 { 40 cout << name << endl; 41 } 42 ~fun(){}; 43 }; 44 45 int main() 46 { 47 thread t1(fn1); 48 thread t2(fn2); 49 t1.detach(); 50 t2.detach(); 51 52 this_thread::sleep_for(chrono::milliseconds(1000)); 53 fun zhangsan("zhangsan", 5); 54 fun*lisi = new fun("zhangsan", 5);//动态申请的方式,但是要用到指针 55 zhangsan.ShowName(); 56 lisi->ShowName(); 57 delete lisi; 58 //lisi->ShowName(); 59 lisi = nullptr; 60 getchar(); 61 return 0; 62 }
我们分析上面程序中的三个典型变量:zhangsan,lisi(在main函数中的),以及第七行的mtx。
zhangsan是一个局部变量,存在于栈空间,lisi也是一个局部变量,但是其采用new的方式,则lisi 属于动态内存分配,存在于堆区,而mtx属于全局变量,存在于某一个静态区。
c++中的典型内存模型为:C++的内存模型 = 静态存储区(全局变量,静态变量)+堆(malloc,new的对象)+栈。
对于上述一段代码,还应该关注的是:如何使用 new ;new 必须和指针变量相关联!!! 用法是:类型 指针 = new 类型
内容总结
以上是互联网集市为您收集整理的c++编程之内存模型全部内容,希望文章能够帮你解决c++编程之内存模型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。