由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个interview问题,关于内存泄漏
相关主题
这样会不会造成memory leak?内存泄漏怎么查?
[合集] Memory leak的问题nnd,内存管理出问题
怎样高效管理内存?[合集] 关于内存泄漏
寻找一个allocator 做一个指定内存空间内的 alloc/freeJava马工说c++内存泄漏,哥只能呵呵了
python一问有没有大牛给讲下javascript的内存泄漏
C++ Interview Questionjava内存问题请教大牛
one question about overloading operator deleteVC++ 中的 memory leak problem
关于内存泄漏c++的问题
相关话题的讨论汇总
话题: delete话题: memory话题: 内存话题: pid
进入Programming版参与讨论
1 (共1页)
D*******a
发帖数: 3688
1
假设有个class B,一个function A()
A() {
B* b=new B();
.....
//到结束都没有delete b
}
问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
delete b。
请问是这样的么?感觉没什么道理啊
r****r
发帖数: 115
2
这个interviewer当初怎么拿到offer的

【在 D*******a 的大作中提到】
: 假设有个class B,一个function A()
: A() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
: 但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
: delete b。
: 请问是这样的么?感觉没什么道理啊

s****u
发帖数: 118
3
有才 -.-

【在 D*******a 的大作中提到】
: 假设有个class B,一个function A()
: A() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
: 但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
: delete b。
: 请问是这样的么?感觉没什么道理啊

P********e
发帖数: 2610
4
如果是java,他说的没错
如果是c/c++, 也不一定错,因为他可能说很多SDE 有memory collector
感觉他就是个外行,还compiler呢,allocate memory is run time process ( post
compilation)

【在 D*******a 的大作中提到】
: 假设有个class B,一个function A()
: A() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
: 但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
: delete b。
: 请问是这样的么?感觉没什么道理啊

s****u
发帖数: 118
5
java好像没有星星啊

【在 P********e 的大作中提到】
: 如果是java,他说的没错
: 如果是c/c++, 也不一定错,因为他可能说很多SDE 有memory collector
: 感觉他就是个外行,还compiler呢,allocate memory is run time process ( post
: compilation)

P********e
发帖数: 2610
6
sorry la
我当作数组了

【在 s****u 的大作中提到】
: java好像没有星星啊
R*******N
发帖数: 7494
7
Allocate究竟做些什么呢?
MMU的对应指令是啥?

【在 P********e 的大作中提到】
: 如果是java,他说的没错
: 如果是c/c++, 也不一定错,因为他可能说很多SDE 有memory collector
: 感觉他就是个外行,还compiler呢,allocate memory is run time process ( post
: compilation)

w********w
发帖数: 4
8
你这个理由不能说明他是外行。
反正生命周期就一个函数,写个编译器能发现这种变量也不是难事。

【在 P********e 的大作中提到】
: 如果是java,他说的没错
: 如果是c/c++, 也不一定错,因为他可能说很多SDE 有memory collector
: 感觉他就是个外行,还compiler呢,allocate memory is run time process ( post
: compilation)

S*****n
发帖数: 227
9
using smartptr sometimes helps.

【在 P********e 的大作中提到】
: 如果是java,他说的没错
: 如果是c/c++, 也不一定错,因为他可能说很多SDE 有memory collector
: 感觉他就是个外行,还compiler呢,allocate memory is run time process ( post
: compilation)

R***Z
发帖数: 1167
10
说new不用delete的还不外行? ...如果这真是他的原话
在一个函数里new后不delete是正常现象啊, 因为程序需要在其他函数里delete

【在 w********w 的大作中提到】
: 你这个理由不能说明他是外行。
: 反正生命周期就一个函数,写个编译器能发现这种变量也不是难事。

相关主题
C++ Interview Question内存泄漏怎么查?
one question about overloading operator deletennd,内存管理出问题
关于内存泄漏[合集] 关于内存泄漏
进入Programming版参与讨论
p****n
发帖数: 148
11
以下几种情况呢?
1)
void main() {
B* b=new B();
.....
//到结束都没有delete b
}
2)
A() {
int pid = fork();
if(pid != 0) {
pid = wait(&status);
// do something;
}
else {
B* b=new B();
//到结束都没有delete b
_exit(0);
}
}
专家给说道说道

【在 D*******a 的大作中提到】
: 假设有个class B,一个function A()
: A() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
: 但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
: delete b。
: 请问是这样的么?感觉没什么道理啊

c*****g
发帖数: 119
12
分配了内存资源但不释放的行为是memory leak
但不是说程序必然有问题,你举的例子,因为heap是随着process分配的,
当process terminate之后,这些资源也会自动释放。

【在 p****n 的大作中提到】
: 以下几种情况呢?
: 1)
: void main() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 2)
: A() {
: int pid = fork();

p****n
发帖数: 148
13
以上两种情况是一样的吗?

【在 c*****g 的大作中提到】
: 分配了内存资源但不释放的行为是memory leak
: 但不是说程序必然有问题,你举的例子,因为heap是随着process分配的,
: 当process terminate之后,这些资源也会自动释放。

c*****g
发帖数: 119
14
yes, but it depends on how many times A() is called, i.e. fork bomb

【在 p****n 的大作中提到】
: 以上两种情况是一样的吗?
t****t
发帖数: 6806
15
通常memory leak不是这样说的
分配了内存,不释放,而且把分配的那个指针给丢了,这样叫做memory leak

【在 c*****g 的大作中提到】
: 分配了内存资源但不释放的行为是memory leak
: 但不是说程序必然有问题,你举的例子,因为heap是随着process分配的,
: 当process terminate之后,这些资源也会自动释放。

c*****g
发帖数: 119
16
sgi definition:
memory leak
Making malloc calls without the corresponding calls to free. The result
is that the amount of heap memory used continues to increase as the process
runs.
pcmag defintition:
When memory is allocated, but not deallocated, a memory leak occurs (the
memory has leaked out of the computer).
这些是通常的定义,当然本来就没啥标准定义。

【在 t****t 的大作中提到】
: 通常memory leak不是这样说的
: 分配了内存,不释放,而且把分配的那个指针给丢了,这样叫做memory leak

d*******d
发帖数: 2050
17
ft,你太倒霉了.

【在 D*******a 的大作中提到】
: 假设有个class B,一个function A()
: A() {
: B* b=new B();
: .....
: //到结束都没有delete b
: }
: 问如果A正常执行,这样会不会内存泄漏。我说会,因为内存分配了没有delete,
: 但是interviewer说不会,因为b在A()结束之后就out of scope了,compiler会自动
: delete b。
: 请问是这样的么?感觉没什么道理啊

t********e
发帖数: 880
18
This interviewer should be fired.
j********e
发帖数: 240
19
这个取决于操作系统,虽然大多数操作系统会自动释放资源,但也有一些变态的,只有重
启才会释放资源.所以一定要在程序里释放内存

【在 c*****g 的大作中提到】
: 分配了内存资源但不释放的行为是memory leak
: 但不是说程序必然有问题,你举的例子,因为heap是随着process分配的,
: 当process terminate之后,这些资源也会自动释放。

c********x
发帖数: 84
20
OF COURSE this is a memory leak. When function A runs out of scope,
the function stack gets unwind, the pointer b and its value get lose, the
interviewer is a jerk.
1 (共1页)
进入Programming版参与讨论
相关主题
c++的问题python一问
哪位在Linux上用C++碰到过memory fragmentation吗?C++ Interview Question
请问C++ exception后如何清理function stack上的内存资源?one question about overloading operator delete
C++程序如何处理内存分块?关于内存泄漏
这样会不会造成memory leak?内存泄漏怎么查?
[合集] Memory leak的问题nnd,内存管理出问题
怎样高效管理内存?[合集] 关于内存泄漏
寻找一个allocator 做一个指定内存空间内的 alloc/freeJava马工说c++内存泄漏,哥只能呵呵了
相关话题的讨论汇总
话题: delete话题: memory话题: 内存话题: pid