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

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

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

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