由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 再问一个C的malloc( )
相关主题
大家新年好。 请教一个 c interview question (转载)How to find the size of an array? Thanks.
Amazon面经C/C++里数组作函数的参数的话应该怎么写?
一道 C++ 的题。菜鸟问个问题,如果太简单了请原谅我的愚蠢
C++相关的面经implement malloc和free这题
问一个C的简单问题攒人品,发几个面试题 C/C++
菜鸟问个C++的pointer问题问个题目
求指点一下我写的程序哪部分是C++ syntax问一个placement new 和 operator new的问题
C++ Q35: sizeof() (B20_20)bloomberg电面
相关话题的讨论汇总
话题: malloc话题: int话题: datatype话题: sizeof话题: 10
进入JobHunting版参与讨论
1 (共1页)
h********m
发帖数: 116
1
一般什么时候需要用malloc()呢?一般情况下不都可以直接定义么?比如说:
int *a = malloc(10*sizeof(int));
我直接定义 int a[10]不就行了。其他的数据结构也差不多巴,
谁能给个例子什么时候必须用malloc呢?感觉很麻烦啊,用完了还要free。
M7
发帖数: 219
2
你在不知道需要多大的数组的时候,就要用malloc.
比如数组的大小是user输入的一个整数。

【在 h********m 的大作中提到】
: 一般什么时候需要用malloc()呢?一般情况下不都可以直接定义么?比如说:
: int *a = malloc(10*sizeof(int));
: 我直接定义 int a[10]不就行了。其他的数据结构也差不多巴,
: 谁能给个例子什么时候必须用malloc呢?感觉很麻烦啊,用完了还要free。

D*****3
发帖数: 2683
3
malloc is dynamic
int a[10] is static
Read more about memory allocation, this is pretty basic question
h********m
发帖数: 116
4
哎,非科班的就是缺乏这些基本概念阿,只能东学一点西学一点,没有一个系统的
knowledge。

【在 D*****3 的大作中提到】
: malloc is dynamic
: int a[10] is static
: Read more about memory allocation, this is pretty basic question

i****d
发帖数: 35
5
我给个例子吧。。。
再次之前先更正一下。。
int *a = malloc(10*sizeof(int)); 是不对的

int *a = (int *)malloc(10*sizeof(int));
另外,因为malloc分配的内存在堆上,需要手动free。但是a[10]分配的内存在stack上
,会自动被销毁的。。所以,你设想有这么一个函数。。
int *randomArray(int n);
让你生成一个大小为n的array,里面都是随机数,返回。你用啥?

【在 h********m 的大作中提到】
: 一般什么时候需要用malloc()呢?一般情况下不都可以直接定义么?比如说:
: int *a = malloc(10*sizeof(int));
: 我直接定义 int a[10]不就行了。其他的数据结构也差不多巴,
: 谁能给个例子什么时候必须用malloc呢?感觉很麻烦啊,用完了还要free。

h********m
发帖数: 116
6
关于这个casting,我刚刚看了wiki:
http://en.wikipedia.org/wiki/Malloc
用不用都行啊,各有优缺点。我写了个test没用,也没报错。

【在 i****d 的大作中提到】
: 我给个例子吧。。。
: 再次之前先更正一下。。
: int *a = malloc(10*sizeof(int)); 是不对的
: 得
: int *a = (int *)malloc(10*sizeof(int));
: 另外,因为malloc分配的内存在堆上,需要手动free。但是a[10]分配的内存在stack上
: ,会自动被销毁的。。所以,你设想有这么一个函数。。
: int *randomArray(int n);
: 让你生成一个大小为n的array,里面都是随机数,返回。你用啥?

M7
发帖数: 219
7
这些概念太基本了,如果你一定要用C, 那你还是要补习一下这些东西。
如果不一定要用C, 还是用C++的vector,省去你malloc/free的麻烦。

【在 h********m 的大作中提到】
: 哎,非科班的就是缺乏这些基本概念阿,只能东学一点西学一点,没有一个系统的
: knowledge。

c*******u
发帖数: 1657
8
大哥你这个都算不上科班非科班的区别了。。。。。
我敢说你写过的程序不超过200行

【在 h********m 的大作中提到】
: 哎,非科班的就是缺乏这些基本概念阿,只能东学一点西学一点,没有一个系统的
: knowledge。

h********m
发帖数: 116
9
我还是不太清楚,比如说:如果我要动态生成一个size n的什么data type,我就直接
用定义,比如说 datatype[n]不就行了么,为啥要malloc(n*sizeof(datatype))呢?

【在 D*****3 的大作中提到】
: malloc is dynamic
: int a[10] is static
: Read more about memory allocation, this is pretty basic question

h********m
发帖数: 116
10
我以前用java写过不少,呵呵。最近才开始学习一些C,结果觉得好麻烦啊 :(

【在 c*******u 的大作中提到】
: 大哥你这个都算不上科班非科班的区别了。。。。。
: 我敢说你写过的程序不超过200行

相关主题
菜鸟问个C++的pointer问题How to find the size of an array? Thanks.
求指点一下我写的程序哪部分是C++ syntaxC/C++里数组作函数的参数的话应该怎么写?
C++ Q35: sizeof() (B20_20)菜鸟问个问题,如果太简单了请原谅我的愚蠢
进入JobHunting版参与讨论
D*****3
发帖数: 2683
11

Try to do it. Then come back again.
Don't tell me you don't even have a c compiler

【在 h********m 的大作中提到】
: 我还是不太清楚,比如说:如果我要动态生成一个size n的什么data type,我就直接
: 用定义,比如说 datatype[n]不就行了么,为啥要malloc(n*sizeof(datatype))呢?

M7
发帖数: 219
12
只有当n是const的时候,datatype[n]才行。
对于一般变量n, datatype[n]不能通过编译,因为compiler对n的大小一无所知,所以无
法在stack里生成数组。
malloc的数组在heap里.

【在 h********m 的大作中提到】
: 我还是不太清楚,比如说:如果我要动态生成一个size n的什么data type,我就直接
: 用定义,比如说 datatype[n]不就行了么,为啥要malloc(n*sizeof(datatype))呢?

h********m
发帖数: 116
13
果然是这样,我试了一个简单的程序:
void main()
{
int i, n;
int a[n];
n=3;
for(i=0; i a[i] = i;
printf("%d, ", a[i]);
}
}
编译没报错,但是运行的时候segamentation fault.

以无

【在 M7 的大作中提到】
: 只有当n是const的时候,datatype[n]才行。
: 对于一般变量n, datatype[n]不能通过编译,因为compiler对n的大小一无所知,所以无
: 法在stack里生成数组。
: malloc的数组在heap里.

M7
发帖数: 219
14
gcc竟让这个通过编译,有没有高人解释一下。
visual studio里通不过编译。

【在 h********m 的大作中提到】
: 果然是这样,我试了一个简单的程序:
: void main()
: {
: int i, n;
: int a[n];
: n=3;
: for(i=0; i: a[i] = i;
: printf("%d, ", a[i]);
: }

r*******e
发帖数: 7583
15
http://www.gnu.org/s/libc/manual/html_node/Memory-Allocation-an
In GNU C, the size of the automatic storage can be an expression that varies
. In other C implementations, it must be a constant.

【在 M7 的大作中提到】
: gcc竟让这个通过编译,有没有高人解释一下。
: visual studio里通不过编译。

M7
发帖数: 219
16
interesting.
把n=3放到int a[n]前面,连运行都没问题了。

varies

【在 r*******e 的大作中提到】
: http://www.gnu.org/s/libc/manual/html_node/Memory-Allocation-an
: In GNU C, the size of the automatic storage can be an expression that varies
: . In other C implementations, it must be a constant.

1 (共1页)
进入JobHunting版参与讨论
相关主题
bloomberg电面问一个C的简单问题
bloomberg onsite菜鸟问个C++的pointer问题
Placement new的一个问题求指点一下我写的程序哪部分是C++ syntax
菜鸟求救 请大家看看我的代码有没有问题C++ Q35: sizeof() (B20_20)
大家新年好。 请教一个 c interview question (转载)How to find the size of an array? Thanks.
Amazon面经C/C++里数组作函数的参数的话应该怎么写?
一道 C++ 的题。菜鸟问个问题,如果太简单了请原谅我的愚蠢
C++相关的面经implement malloc和free这题
相关话题的讨论汇总
话题: malloc话题: int话题: datatype话题: sizeof话题: 10