c的智能指针不就基本解决了野指针问题了吗?为什么还要吹捧rust的内存安全?
从编译器阶段开始,rust就消除了内存安全问题,包括单线程和多线程。这是由于编译器级别的rust的复杂所有权机制,这使得任何人都不可能编写不安全的代码。这就是法律体系。
使用c/c,世界上没有一个程序员能够保证代码的绝对内存安全性。虽然c是一个屠龙者,但这个问题也非常重要。也就是说,没有办法保证代码的内存安全和线程安全。
c智能指针,或者在使用过程中出现问题,例如多线程环境中的最新共享uptr,如果程序员忘记执行锁定操作怎么办?这不会发生在信任的情况下。使用arc机制,如果不锁定,就无法访问数据。即使在单线程环境中,您能保证所有程序员都不会传递智能指针实例的引用吗?太多了。c无法在编译时发现这些问题。
铁锈是法治,而不是人治。数据访问冲突,根本无法编译
c语言中的函数指针和指针函数,有什么区别吗?该如何理解?
函数指针和指针函数的区别:1。这两个名词都是修饰名词,可以在中间加上一个助词“de”,稍加扩展。现在,函数的指针和指针的函数更加清晰了。现在,我们可以通过添加一些修饰符来再次展开—指向函数的指针和返回值为指针的函数基本上都很清楚。
2.格式。
type(*pfurc)(typepara)--函数指针
type*func(typepara)--指针函数
3。首先,指针函数是一个普通函数,但返回值是指针(实际上是地址)。许多人认为它是神秘的,因为他们害怕指针
!4.函数指针。这有点复杂。首先,*与具有最高优先级的pfunc组合,因此pfunc是指针。同时,指针后面有一对圆括号,里面有参数,与函数参数的格式相同。因此,指针就是函数指针,指针前面有一个类型返回值类型!有些人觉得这里很奇怪。指针怎么会有返回值?
5.指针有一个返回值,因为当指针被使用时,它将指向一个与它自己的格式相似的函数。因此,指针的返回值和参数格式决定了它指向的函数的格式
!6.如果你想精通函数指针,为什么不呢?你必须精通它,因为当你使用函数指针时,它反映了c语言的绑定特性,也是c语言多态性的雏形
学习c语言的时候指针应该怎么理解?
简而言之,指针是表示地址的无符号整数。
所以仅仅理解指针是不够的。您还需要知道指针指向的数据空间是如何排列的。这可能涉及到一些与特定cpu/os相关的知识。如果我们能用计算机体系结构的知识来理解它,它会更深刻、更准确。
例如:
如何存储float/double/longdouble?
如何在数据空间中组织阵列?
字符串是如何存储的?
如何存储结构和联合体?
位域组织
具体cpu相关部分如下:
整数的存储将涉及cpu大小的指定
浮点数的存储直接关系到fpu的设计
此外,还有一些扩展知识,涉及内存的分配和释放:如何在程序中分配内存?(malloc/free)
什么是堆和堆栈?
总而言之:指针是地址和整数。但要充分利用它,我们需要了解计算机存储空间的分配。困难在这里,突破在这里。
原文标题:普通电视变智能电视 C 的智能指针不就基本解决了野指针问题了吗?为什么还要吹捧rust的内存安全?,如若转载,请注明出处:https://www.saibowen.com/tougao/22816.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。