由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - one C++ question
相关主题
问个C++题请问如何保证只在stack上建立object?
发两个软件组的面试题新Qualcomm面经
发发面经 攒人品 C++的Onsite失败,说几个面试中有印象的问题。
我也贡献一个B家店面one c++ questions
C++ Q52: (C6)包子呼唤大牛--问关于C++Destructor的问题 (转载)
C++ online Test 一题问个C++重新编译的问题
一道面试的选择题Bloomberg(financial software developer)第一轮面试
求教rotate matrix扩展的解法C++面试问题,高人请进啊~~~
相关话题的讨论汇总
话题: free话题: c++话题: test话题: destructor话题: heap
进入JobHunting版参与讨论
1 (共1页)
b********e
发帖数: 693
1
what will happen if free an object in stack?
I did a test
A.
Class A{
public:
~A(){cout << "Destructor" << endl:}
}
int test()
{
A a;
free(&a);
return 0;
}
after the program run, it seems good, and print out Destructor
but after I insert one line into the func, the pgram crash
int test()
{
A a
free(&a);
cout << "test " << endl;
return 0;
}
s*********t
发帖数: 1663
2
free ???

【在 b********e 的大作中提到】
: what will happen if free an object in stack?
: I did a test
: A.
: Class A{
: public:
: ~A(){cout << "Destructor" << endl:}
: }
: int test()
: {
: A a;

s*******a
发帖数: 42
3
free????????????????????????????/
Q****r
发帖数: 7340
4
更正一个,object在heap上
不在stack上

【在 b********e 的大作中提到】
: what will happen if free an object in stack?
: I did a test
: A.
: Class A{
: public:
: ~A(){cout << "Destructor" << endl:}
: }
: int test()
: {
: A a;

s***e
发帖数: 793
5
no idea.
U can attach a debugger and step in

【在 b********e 的大作中提到】
: what will happen if free an object in stack?
: I did a test
: A.
: Class A{
: public:
: ~A(){cout << "Destructor" << endl:}
: }
: int test()
: {
: A a;

b********e
发帖数: 693
6
for my understand
A a is at stack
but
A * a = new A() is at heap

【在 Q****r 的大作中提到】
: 更正一个,object在heap上
: 不在stack上

a****n
发帖数: 1887
7
debug version 貌似 CRT LIB 会check 是不是合法的heap指针, assertion failed
b********e
发帖数: 693
8
A a
&a is not valid pointer in heap.
but when only use free(&a), it works,
only problem is I add cout << ""test<< endl; after free
I also tried do this in main function, it works too
wired, don't understand

【在 a****n 的大作中提到】
: debug version 貌似 CRT LIB 会check 是不是合法的heap指针, assertion failed
a****n
发帖数: 1887
9
这个情况应该是程序调用栈的函数返回地址被毁了, 一般会出现0x00000005
exception. 具体怎么被毁掉的我还不是很清楚, 这个的查看free 函数的算法
另外上面所说的heap valid 函数只在debug version 中有效, release 版本不会做这个检查
再另外,这个应该是编译器实现相关的, 你用的什么编译器, 什么版本?

【在 b********e 的大作中提到】
: A a
: &a is not valid pointer in heap.
: but when only use free(&a), it works,
: only problem is I add cout << ""test<< endl; after free
: I also tried do this in main function, it works too
: wired, don't understand

Q****r
发帖数: 7340
10
我觉得reference variable是在stack 上
object本身是在heap上
A a
a 是A的一个reference type...
有没有牛人来解惑以下

【在 b********e 的大作中提到】
: for my understand
: A a is at stack
: but
: A * a = new A() is at heap

a****n
发帖数: 1887
11
楼上,如果你说的是c++,你就全错了
w******1
发帖数: 520
12
C++的, 通过NEW 生成的, 应该是在HEAP上吧?
A a; 这个在STACK上。
l*******o
发帖数: 791
13
A a是个automatic variable 或者说个local variable,在定义它的函数栈空间内得到
空间。如果你用free去释放它,我觉得有点张冠李戴。因为free是释放malloc在自由存
储区申请得空间,自由存储区和堆很相似。目标在栈中,free指向自由存储区,两者不
对口。
1 (共1页)
进入JobHunting版参与讨论
相关主题
C++面试问题,高人请进啊~~~C++ Q52: (C6)
请教1个工作面试题C++ online Test 一题
为什么C++的constructor出错可以抛出异常,而destructor出错一道面试的选择题
找工作总结(CS)求教rotate matrix扩展的解法
问个C++题请问如何保证只在stack上建立object?
发两个软件组的面试题新Qualcomm面经
发发面经 攒人品 C++的Onsite失败,说几个面试中有印象的问题。
我也贡献一个B家店面one c++ questions
相关话题的讨论汇总
话题: free话题: c++话题: test话题: destructor话题: heap