读书人

突然不知道为什么要分配内存了。该如何

发布时间: 2012-04-25 19:32:32 作者: rapoo

突然不知道为什么要分配内存了。。。
好像自从开始学指针这块几乎每个程序都开始有分配内存了。以前却没有。但是指针的程序也有不分配内存的。
为什么有的程序需要分配内存有的不需要?乱了。。。

[解决办法]
比如你需要一块内存,但却不知道该分配多大,直到运行时才能够知道该分配多大的内存。

C/C++ code
void func(void){    int nSize = GetSize();     int *pBuffer;    pBuffer = malloc(nSize * sizeof(int));    // 使用pBuffer指向的内存    free(pBuffer);}
[解决办法]
每一个指针都占用一个定义类型的字节数 如int *p;就占用一个int字节数

例 int a[5];开辟了一个含有5个元素且地址连续的int型空间

假如a的首地址是10001 那么他的第一元素的地址也是10001 第2个地址就是10001+int(字节数)

此时 用p=a; p内存放的地址是10001; 很简单p并没有分配内存,他和a用的是同一段内存

这是楼主说的指针并没有分配一段和a一样的内存

例 char *p="hello word!"

p指向的也是hello word!的首地址,并非是把hello word!赋给p;并且你需要把hello word!看成一个常量 不能对其赋值

总之楼主要记住,指针系统只给分配一个他所属类型的字节数,不是不分配内存,指针里面放的是一个地址,他与该地址所指向的变量共享一段内存


[解决办法]
探讨

内存空间分配有两种:
1 静态
2 动态

读书人网 >C语言

热点推荐