首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

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

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

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 动态

热点排行
Bad Request.