首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

12个很好玩的C语言面试题,不来测试下嘛?

因为“int”返回类型让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。 4.内存泄露 问:下面的代码导致内存泄漏? ?...答:尽管上面的代码并没有释放分配给“ptr”的内存,但并不会在程序退出后导致内存泄漏程序结束后,所有这个程序分配的内存都会自动被处理掉。...但如果上面的代码处于一个“while循环”,那将会导致严重的内存泄漏问题! 提示:如果你想知道更多关于内存泄漏的知识和内存泄漏检测工具,可以来看看我们Valgrind上的文章。...答:这里的问题在于,代码(通过增加“ptr”)修改while循环里“ptr”存储的地址。...这个操作是无效的,因此造成seg-fault或者崩溃。 10.会改变自己名字的进程 问:你能写出一个在运行时改变自己进程名的程序? 答:参见下面这段代码: ?

1.1K3130

经典C语言面试题

因为“int”返回类型让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。 4.内存泄露 问:下面的代码导致内存泄漏?...,但并不会在程序退出后导致内存泄漏。...程序结束后,所有这个程序分配的内存都会自动被处理掉。但如果上面的代码处于一个“while循环”,那将会导致严重的内存泄漏问题!...提示:如果你想知道更多关于内存泄漏的知识和内存泄漏检测工具,可以来看看我们Valgrind上的文章。...这个操作是无效的,因此造成seg-fault或者崩溃。 10.会改变自己名字的进程 问:你能写出一个在运行时改变自己进程名的程序

2.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

12个有趣的C语言面试题

因为“int”返回类型让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。 4.内存泄露 问:下面的代码导致内存泄漏?...,但并不会在程序退出后导致内存泄漏。...程序结束后,所有这个程序分配的内存都会自动被处理掉。但如果上面的代码处于一个“while循环”,那将会导致严重的内存泄漏问题!...提示:如果你想知道更多关于内存泄漏的知识和内存泄漏检测工具,可以来看看我们Valgrind上的文章。...这个操作是无效的,因此造成seg-fault或者崩溃。 10.会改变自己名字的进程 问:你能写出一个在运行时改变自己进程名的程序

75420

经典C面试题

由于“int”返回类型让程序返回状态值。这点很重要,特别当程序是作为依赖于程序成功执行的脚本的一部分执行时。 4.内存泄露 问:以下的代码导致内存泄漏?...,但并不会在程序退出后导致内存泄漏。...程序结束后,全部这个程序分配的内存都会自己主动被处理掉。但假设上面的代码处于一个“while循环”,那将会导致严重的内存泄漏问题!...提示:假设你想知道很多其它关于内存泄漏的知识和内存泄漏检測工具,能够来看看我们Valgrind上的文章。...这个操作是无效的,因此造成seg-fault或者崩溃。 10.会改变自己名字的进程 问:你能写出一个执行时改变自己进程名的程序

68010

学习一下Python的垃圾回收

这里的内存泄漏不是出内存出现的数据丢失,或者说内存空间物理上消失了,而是指程序本身没有设计好,导致占用的内存应该释放出来而实际上没有释放,导致系统可用的内存严重不足,出现系统或服务因此而崩溃。...: 27.2265625 MB 通过这个例子,可以看出在函数 func 创建一个大列表 a 后,内存占用迅速增加到 400 MB,func 调用结束后内存又恢复到 27 MB,说明 func 调用结束后...从另外一个角度理解:函数内部声明的列表 a 是局部变量,函数返回后,局部变量的引用注销掉;此时,列表 a 所指代对象的引用数为 0,Python 便会执行垃圾回收,因此之前占用的大量内存就又回来了。...现在你已经明白,Python 是自动回收垃圾的。 2、可以手动回收内存? 虽然 Python 可以自动回收内存,可我偏偏想手动回收内存,可以?...对于一个有向图,如果从一个节点出发进行遍历,标记其经过的所有节点;那么,遍历结束后,所有没有被标记的节点,我们就称之为不可达节点。

48910

前端常见内存泄漏及解决方案

打开任务管理器,看到内存占有率已经很高了,初步判断可能存在内存泄漏的情况。下面排查内存泄漏的原因。 系统进程不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。...当内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。...如果在浏览器,全局对象就是 window 对象。变量在窗口关闭或重新刷新页面之前都不会被释放,如果未声明的变量缓存大量的数据,就会导致内存泄露。...闭包引起的内存泄漏 原因:闭包可以读取函数内部的变量,然后让这些变量始终保存在内存。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。...这个示例的问题在于这个 v-if 指令从 DOM 移除父级元素,但是我们并没有清除由 Choices.js 新添加的 DOM 片段,从而导致内存泄漏

1.1K10

【Web技术】849- 前端常见内存泄漏及解决方案

打开任务管理器,看到内存占有率已经很高了,初步判断可能存在内存泄漏的情况。下面排查内存泄漏的原因。 系统进程不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。...当内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。...如果在浏览器,全局对象就是 window 对象。变量在窗口关闭或重新刷新页面之前都不会被释放,如果未声明的变量缓存大量的数据,就会导致内存泄露。...闭包引起的内存泄漏 原因:闭包可以读取函数内部的变量,然后让这些变量始终保存在内存。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。...这个示例的问题在于这个 v-if 指令从 DOM 移除父级元素,但是我们并没有清除由 Choices.js 新添加的 DOM 片段,从而导致内存泄漏

92120

万恶的前端内存泄漏及万善的解决方案「详解」

打开任务管理器,看到内存占有率已经很高了,初步判断可能存在内存泄漏的情况。下面排查内存泄漏的原因。 系统进程不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。...当内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。...如果在浏览器,全局对象就是 window 对象。变量在窗口关闭或重新刷新页面之前都不会被释放,如果未声明的变量缓存大量的数据,就会导致内存泄露。...2、闭包引起的内存泄漏 原因:闭包可以读取函数内部的变量,然后让这些变量始终保存在内存。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。...这个示例的问题在于这个 v-if 指令从 DOM 移除父级元素,但是我们并没有清除由 Choices.js 新添加的 DOM 片段,从而导致内存泄漏

93540

python学习9:Python 的“垃圾”回收

而对于服务器,内存管理则显得更为重要,不然很容易引发内存泄漏 - 这里的泄漏,并不是说你的内存出现了信息安全问题,被恶意程序利用了,而是指程序本身没有设计好,导致程序未能释放已不再使用的内存。...- 内存泄漏也不是指你的内存在物理上消失了,而是意味着代码分配了某段内存后,因为设计错误,失去了对这段内存的控制,从而造成了内存的浪费。...(),列表 a 被创建之后,内存占用迅速增加到了 433 MB:而在函数调用结束后,内存则返回正常。...这是因为,函数内部声明的列表 a 是局部变量,函数返回后,局部变量的引用注销掉;此时,列表 a 所指代对象的引用数为 0,Python 便会执行垃圾回收,因此之前占用的大量内存就又回来了。...,额外增加两次 1.

45520

聊一聊 Python 的“垃圾”回收

而对于服务器,内存管理则显得更为重要,不然很容易引发内存泄漏- 这里的泄漏,并不是说你的内存出现了信息安全问题,被恶意程序利用了,而是指程序本身没有设计好,导致程序未能释放已不再使用的内存。...- 内存泄漏也不是指你的内存在物理上消失了,而是意味着代码分配了某段内存后,因为设计错误,失去了对这段内存的控制,从而造成了内存的浪费。...(),列表 a 被创建之后,内存占用迅速增加到了 433 MB:而在函数调用结束后,内存则返回正常。...这是因为,函数内部声明的列表 a 是局部变量,函数返回后,局部变量的引用注销掉;此时,列表 a 所指代对象的引用数为 0,Python 便会执行垃圾回收,因此之前占用的大量内存就又回来了。...,函数 func 调用已经不存在 print(sys.getrefcount(a)) ########## 输出 ########## 2 4 2 如果其中涉及函数调用,额外增加两次1.

1.9K31

Go Goroutine

创建一个线程需要占用少量内存和寄存器组。同一个进程的线程可以共享内存进程和线程相比主要有以下区别,这些不同点也决定了多进程和多线程编程分别适用不同的应用场景。...需要注意的是进程之间可以通过共享内存的方式通讯,这种通讯方式和同一个进程多个线程之间的通讯效率上差别不大。 多进程系统更可靠,能重复利用多个CPU及其内核的优势,适合高密度计算的场景。...其实main方法Golang也是一个Goroutine,只不过它比较特殊,如果main Goroutine终止执行,Go语言 进程退出,其他的Goroutine也就都被终止了。...如果我们创建了一个Goroutine,但是意外导致这个Goroutine永远不会退出,那么为此Goroutine分配的内存就永远不会释放,我们称这种情况为Goroutine泄漏。...process方法,通过Context包实现100ms 限时返回的逻辑。然后定义无缓冲通道ch,启动Goroutine执行search方法通过channel返回结果。

41220

计算机考研复试C语言常见面试题「建议收藏」

内存泄漏(Memory Leak)是指程序已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。...weak_ptr 当两个对象同时使用一个shared_ptr成员变量指向对方,造成循环引用,使引用计数失效,从而导致内存泄露。...,使引用计数失效,从而导致内存泄漏。...return 0; } 纯虚函数是基类声明的虚函数,它在基类没有定义,但要求任何派生类都要定义自己的实现方法。...虚函数因为用了虚函数表机制,调用的时候增加一次内存开销。 21、静态多态与动态多态 静态多态有两种实现方式:函数重载与函数模板的使用。

1.5K30

浅谈Golang内存泄漏

何为内存泄漏# 内存泄漏并不是指物理上的内存消失,而是写程序的过程,由于程序的设计不合理导致对之前使用的内存失去控制,无法再利用这块内存区域;短期内的内存泄漏可能看不出什么影响,但是当时间长了之后,...一般一个进程结束之后,内存自动回收,同时也自动回收那些被泄露的内存,当进程重新启动后,这些内存又可以重新被分配使用。...,而且,前面也说到切片本质是对数组的引用,传递过程是引用传递,传递大容量的切片时是可以节省空间的,只需要传递一个地址,但是正因为这一特性,也使得slice使用不当的情况下会发生内存泄漏 2.2...duration就是指每隔 duration 时间长度就会发送一次值,可以 ticker.C 接收到,这里容易造成内存泄漏的地方主要在于编写代码过程没有stop掉这个定时任务,导致定时任务一直发送...解决办法就是不要忘记stop ticker 4. goroutine造成内存泄漏# 平时开发过程,goroutine泄漏通常是最常见也最频繁的,goroutine是协程,本身占用内存不大,一般就2KB

2.5K20

Node.js内存泄漏分析

一次性 发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅一块内存发生泄漏。比如,类的构造函数中分配内存析构函数却没有释放该内存,所以内存泄漏只会发生一次。...服务器性能异常 一般情况下,内存泄漏直接的影响就是服务器,服务器因为内存的不断上涨,从而系统资源可使用的空间越来越小,这样就会慢慢的导致该服务影响到服务器其他的一些基础服务的运行,从而导致服务器越来越慢...模块的私有方法和属性 任意编写的模块文件,均会在头和尾部上添加字符串,以形成闭包,然后require的过程中被调用一次,并且将exports对象存储在内存,直到进程退出才会回收。...这里memwatch我们是应用该工具相应的功能来定位泄漏代码逻辑。...GC内存分析 既然获取到该文件后,我们再使用google chrome的工具来分析GC的内存情况,查看出导致内存泄漏的原因。 ?

2.3K40

Node.js内存泄漏的原因竟然是……?

而且开发者忘记free的内存块,一直无法释放。这样也导致内存泄漏。...(二)Node.js内存管理(自动管理) 为了解决手动管理内存带来的问题,V8在内存管理方面做了改进: 开发者创建数据时,V8自动分配对应的内存空间,无需再调用malloc。...实践 可以使用v8-mat这个npm包,把内存快照转换成支配树,找到内存的可疑对象。也可以使用Chrome Dev Tool对快照的对象,按Retained Size进行排序,自行判断。...四、常见的内存泄露场景 最后列举一些常见的内存泄漏场景,开发过程,对这些情况稍加注意,能帮助我们避免大部分的内存泄漏问题。...(一)隐式全局变量 没有使用var/let/const声明的变量直接绑定在Global对象上(Node.js)或者Windows对象上(浏览器),哪怕不再使用,仍不会被自动回收: function

1.6K20

谈谈如何利用 valgrind 排查内存错误

具有进程级别的生命周期的静态指针或者全局指针指向的内存块没有进程结束前被释放是造成这种场景下的内存泄漏的主要原因。 内存已经分配,但是进程运行过程不能被正常释放。...still reachable 是内存泄漏? 其实,这种场景下的泄漏在严格意义上来讲也许并不能称之为内存泄漏,因为进程运行过程并没有泄漏问题。...虽然内存进程结束之前确实未被释放, 但是指向这块内存的指针是 reachable 的,操作系统获取这些指针帮助我们释放内存。...test04 ,我们 new 一个数组返回给局部变量 data,随后声明静态指针 p 指向数组第二个元素的地址,test04 测试结束后直到 main 函数返回前,静态指针 p 仍然可获得,但是...最后,我们 test04 函数增加一行代码 p = nullptr;。

6.1K41

面试必备(背)--Go语言八股文系列!

协程和线程和进程的区别? 并发掌握,goroutine和channel声明与使用! 进程: 进程是具有一定独立功能的程序,进程是系统资源分配和调度的最小单位。...Golang的内存模型为什么小对象多了造成GC压力? 通常小对象过多会导致GC三色法消耗过多的GPU。优化思路是,减少对象分配。 11. channel 为什么它可以做到线程安全?...可以避免每次调用方法时复制该值,值的类型为大型结构体时,这样做更加高效。 21. Go函数为什么会发生内存泄露?...,就会造成内存泄漏的现象。...Goroutine发生了泄漏如何检测? 可以通过Go自带的工具pprof或者使用Gops去检测诊断当前系统上运行的Go进程的占用的资源。 23. Go两个Nil可能不相等

4.1K32

Go常见错误集锦之切片使用不当造成内存泄漏的那些场景

某些情况下,对一个已存在的切片或数组进行切分操作可能导致内存泄漏。本文我们将介绍导致内存泄漏的场景以及如何避免内存泄漏。 01 因切片容量而导致内存泄漏 假设我们有一个二进制的协议。...总之,我们刚才的应用程序,对一个已存在的切片或数组进行切分,本质上是创建了一个底层数组和源切片一样大小的新的切片,从而导致了高内存消耗。使用内建的copy函数,可以按实际需要控制消耗的内存。...那么,在内存中元素会被GC回收?...本示例,我们返回一个具有和输入参数切片的容量大小一致的切片,但剩下的 *string类型的元素会被GC自动回收。 03 小结 ---- 本节,我们看到了两种潜在的内存泄露问题。...第一种是关于已有的切片或数组上进行切分操作而保留了原有切片的容量大小导致内存泄露。如果我们一个大的切片上只切分出一个小的切片,那么大量内存将会保持分配状态但没有得到应用。

1.2K30

Go内存泄漏是怎么回事?

前言知识1:什么是内存泄漏内存泄漏(Memory Leak)并不是指物理上的内存消失,而是写程序的过程,由于程序的设计不合理导致对之前使用的内存失去控制,无法再利用这块内存区域,程序已动态分配的堆内存由于某种原因程序未释放或无法释放...2:垃圾回收GC我们知道Golang垃圾回收 (GC garbage collection) 是一种自动内存管理机制,即我们程序定义一个变量后,会在内存开辟相应空间进行存储。...当不需要此变量后,需要手动销毁此对象,释放内存, 而这种对不再使用的内存资源进行自动回收的功能即为垃圾回收,那么为什么还会出现内存泄漏呢?因为过程如果不注意,很容易造成内存泄漏的问题。...,我们来看看为什么导致内存泄漏的发生,NewTimer(d).C 每次都是 return 了一个新的对象。...go task()}for循环条件一旦命中default则会出现循环空转的情况,最终导致资源无法释放msg := make(chan int, 10) go func() { for

83720
领券