由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Quant版 - 考个C++题
相关主题
问个C++的问题总结一下金融分析方面需要知道的知识
金融公司的online test是选Java还是选C好?找工作结束了,随便写点吧
说起smart pointer[合集] Need suggestions for two offers (intern)
虚心请教一道编程题C++: how to dynamically allocate a 2-D array
chimbo面经里一道编程面试题[合集] C++: operator new 为啥要是 static的, 不是有啥影响? (
数据结构问题某某 trading 的一道题
[合集] one interview question about CC++ and threading interview questions
一个C++面试问题学C++还是C#?
相关话题的讨论汇总
话题: int话题: allocate话题: null话题: void话题: pointer
进入Quant版参与讨论
1 (共1页)
w*******x
发帖数: 489
1
刚才写程序的时候发现自己犯了错误,大家能迅速看出来哪里错了不?怎么改? ^-^
int *X=NULL;
void allocate(int *Y);
int main()
{
allocate(X);
//do something
delete [] X;
return 0;
}
void allocate(int *Y)
{
if(Y==NULL)Y=new int[10];
for(int t=0;t<10;t++)Y[t]=t;
}
k***y
发帖数: 25
2
指向指针的指针?
k*******d
发帖数: 1340
3
函数调用的开始 Y = X = NULL。 然后Y指向了新分配的一个数组,但是X还是NULL啊。
用Return Y吧,没有必要把X作为参数放进去。
然后
if (X == NULL)
X = allocate();
w**********y
发帖数: 1691
4
把调用的参数改成 reference of X行不?
g**********1
发帖数: 1113
5
这里调用时产生了X的copy,new 只改了copy,没有该X
g**********1
发帖数: 1113
6
return一个值应该就可以
c***g
发帖数: 472
7
如果do something 产生异常, 会不会有memory leak?

【在 w*******x 的大作中提到】
: 刚才写程序的时候发现自己犯了错误,大家能迅速看出来哪里错了不?怎么改? ^-^
: int *X=NULL;
: void allocate(int *Y);
: int main()
: {
: allocate(X);
: //do something
: delete [] X;
: return 0;
: }

J*****n
发帖数: 4859
8
i think u can't delet X, coz it is not initiallized by dynamic allocation.
int * X=new int;
X=NULL;
k*******d
发帖数: 1340
9
改成pass-by-reference 是可以的
如果do something出异常,会有memory leak, 得有try catch block,而后在catch中
释放内存。我觉得要想方便地写exception-safe的代码,还是用smart pointer,或者
是vector这些带有自动释放内存功能的类比较好。
w*******x
发帖数: 489
10
嗯,大家眼光都很敏锐阿。。我查了好一会才发现问题所在(当然原来程序有几百行,
难找一点)
总结一下:
1.) 把allocate函数的参数改成 指针的引用。 allocate(int * & Y) 就可以了。
2.) 把allocate函数的参数改成 指向指针的指针 allocate(int ** Y), 调用的时候
传递指针的地址 &X
3.) 直接返回指针。

【在 w*******x 的大作中提到】
: 刚才写程序的时候发现自己犯了错误,大家能迅速看出来哪里错了不?怎么改? ^-^
: int *X=NULL;
: void allocate(int *Y);
: int main()
: {
: allocate(X);
: //do something
: delete [] X;
: return 0;
: }

c****2
发帖数: 31
11
void allocate(int *Y) is wrong. According to the problem. Y is the address
of int array, So it is pointer to pointer, in another word: *Y is the
address of first element of int array. If you want to change it through a
function, the function needs to be defined as double pointer.
1 (共1页)
进入Quant版参与讨论
相关主题
学C++还是C#?chimbo面经里一道编程面试题
一个C++问题数据结构问题
C++ 题[合集] one interview question about C
C++ 110 题在精华区怎么找不到?一个C++面试问题
问个C++的问题总结一下金融分析方面需要知道的知识
金融公司的online test是选Java还是选C好?找工作结束了,随便写点吧
说起smart pointer[合集] Need suggestions for two offers (intern)
虚心请教一道编程题C++: how to dynamically allocate a 2-D array
相关话题的讨论汇总
话题: int话题: allocate话题: null话题: void话题: pointer