由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 数组定义的时候,分配空间了么?
相关主题
C里面一个被分配了内存的指针如何知道分配了多少?關於JVM多線程的內存分配
C++ 全局变量是怎么回事?如何动态分配一个2维数组?
using?一个OpenMP问题求教
问个char * 的问题请教什么时候变量会被load进stack,什么时候进入heap呢?
一个关于空间分配的问题C++怎样设置全局变量
如何模拟实现thrashing?FP over head很高
问个VS2010 里面数组的问题全局对象
c里全局数组的再次赋值问题从全局变量到IOC模式
相关话题的讨论汇总
话题: endl话题: int话题: long话题: 分配
进入Programming版参与讨论
1 (共1页)
f*******y
发帖数: 139
1
记得定义的时候是不分配空间的,除非是static或全局。要用malloc分配。
C好像是这样,C++呢?
g*****g
发帖数: 34805
2
又不知道数组多大,怎么分配空间呢。就是分配一个指针罢了。

【在 f*******y 的大作中提到】
: 记得定义的时候是不分配空间的,除非是static或全局。要用malloc分配。
: C好像是这样,C++呢?

f*******y
发帖数: 139
3
这样定义
main()
{
int a[40];
....
}
a 分配空间了么?

【在 g*****g 的大作中提到】
: 又不知道数组多大,怎么分配空间呢。就是分配一个指针罢了。
g*********e
发帖数: 42
4
当然分配了,sizeof a, 40*4啊。
g*********e
发帖数: 42
5
不过以前看一牛人说过,好像分配不分配操作系统说了算。
b**g
发帖数: 335
6
没有...因为a不是全局
所以a是分配在stack上,要run-time时才会出现
不过现在即使是全局,也多半是在run-time才分配,类似copy-on-write的

【在 f*******y 的大作中提到】
: 这样定义
: main()
: {
: int a[40];
: ....
: }
: a 分配空间了么?

f*******y
发帖数: 139
7
我记得以前用C的时候,数组要定义成全局或静态,或用malloc,否则内存有可能出错。
但现在用VS2003, C++,定义了一个数组,感觉是在run-time 分配了空间的。
另外不是run-tiime的难道是分配在heap上么?

【在 b**g 的大作中提到】
: 没有...因为a不是全局
: 所以a是分配在stack上,要run-time时才会出现
: 不过现在即使是全局,也多半是在run-time才分配,类似copy-on-write的

d*******n
发帖数: 524
8
//test.cpp
#include
using namespace std;
int main() {
int a[5] = {11, 22, 33, 44, 55};
int b[5];
int c[5];
int d[5] = {1, 2, 3, 4, 5};
cout << "&a =\t" << (long)&a << endl
<< "&b =\t" << (long)&b << endl
<< "&c =\t" << (long)&c << endl
<< "&d =\t" << (long)&d << endl;
}
$ ./a.out
&a = 140733237530704
&b = 140733237530672
&c = 140733237530640
&d = 140733237530608

【在 f*******y 的大作中提到】
: 这样定义
: main()
: {
: int a[40];
: ....
: }
: a 分配空间了么?

d*******n
发帖数: 524
9
That's how Java deals with array.
In C++, compiler does allocate memory when you define an array.
Thinking in C++ talks about this.

【在 g*****g 的大作中提到】
: 又不知道数组多大,怎么分配空间呢。就是分配一个指针罢了。
m**a
发帖数: 46
10
using namespace std;
int main() {
int a[5] = {11, 22, 33, 44, 55};
int b[5];
int c[5];
int d[5] = {1, 2, 3, 4, 5};
cout << "&a =\t" << (long)&a << endl
<< "&b =\t" << (long)&b << endl
<< "&c =\t" << (long)&c << endl
<< "&d =\t" << (long)&d << endl;
}
$ ./a.out
&a = 140733237530704
&b = 140733237530672
&c = 140733237530640
&d = 140733237530608
is this correct? a,b,c,d are pointers already, what will we get from &a, &b,
&c, and &d? maybe you should use (long)&a[0] instead of (long)&a.
t****t
发帖数: 6806
11
go ahead and read this chapter:
http://c-faq.com/aryptr/index.html
to summarize, array is NOT equivalent to pointer.

【在 m**a 的大作中提到】
: using namespace std;
: int main() {
: int a[5] = {11, 22, 33, 44, 55};
: int b[5];
: int c[5];
: int d[5] = {1, 2, 3, 4, 5};
: cout << "&a =\t" << (long)&a << endl
: << "&b =\t" << (long)&b << endl
: << "&c =\t" << (long)&c << endl
: << "&d =\t" << (long)&d << endl;

d*******n
发帖数: 524
12
Is this for me or mana?

【在 t****t 的大作中提到】
: go ahead and read this chapter:
: http://c-faq.com/aryptr/index.html
: to summarize, array is NOT equivalent to pointer.

t****t
发帖数: 6806
13
for mana, of course!

【在 d*******n 的大作中提到】
: Is this for me or mana?
O*******d
发帖数: 20343
14
分配了。空间是sizeof(a);

【在 f*******y 的大作中提到】
: 这样定义
: main()
: {
: int a[40];
: ....
: }
: a 分配空间了么?

1 (共1页)
进入Programming版参与讨论
相关主题
从全局变量到IOC模式一个关于空间分配的问题
问个管理程序参数的问题如何模拟实现thrashing?
关于多线程编程的一个问题问个VS2010 里面数组的问题
问个C语言里面全局变量和本地变量引用问题c里全局数组的再次赋值问题
C里面一个被分配了内存的指针如何知道分配了多少?關於JVM多線程的內存分配
C++ 全局变量是怎么回事?如何动态分配一个2维数组?
using?一个OpenMP问题求教
问个char * 的问题请教什么时候变量会被load进stack,什么时候进入heap呢?
相关话题的讨论汇总
话题: endl话题: int话题: long话题: 分配