怎样通过函数为指针变量分配内存

第二天问题解决了。最近比较忙,一直没有回答(捂脸刚开始的时候内存是这样子的。怎样通过函数为指针变量分配内存

最下面是环境变量,再往上是栈。最上面是文档,下面一层是初始化数据,再下面一层是未初始化数据,再往下是堆。开始执行程序。先进入main函数,接着执行第一行代码int *pint;内存中是这样操作的。先为main函数分配一段存储空间。因为pint是局部变量,所以pint存储在main函数的存储空间内,pint分配4个字节。因为pint没有初始化,所以它的值是不可预知的。假设pint的起始地址为1234。此时的内存是这样的。怎样通过函数为指针变量分配内存

然后调用getmem函数。getmem函数有两个局部变量,由getmem(\u0026amp;pint, 10);可知p存储的是pint的地址,num是10。假设p的起始地址为2355,num的起始地址为2345。此时的内存是这样的。 【怎样通过函数为指针变量分配内存】 怎样通过函数为指针变量分配内存

因为p = \u0026amp;pint;所以*p = pint;然后执行getmem函数中的代码。*p = (int *)malloc(num * sizeof(int));进行动态内存分配。假设动态内存分配到的空间的起始地址为9876,则pint = 9876。最终内存变成这样子。怎样通过函数为指针变量分配内存

加上箭头是这样子。怎样通过函数为指针变量分配内存

p是二级指针,指向pint指针,pint指针指向9876。
■网友
在C++中要修改一个n级指针当然要传一个n+1级指针了……\u0026amp;pint就是pint这个指针变量的地址了…… 然后*p = ...就把pint这个指针改成了...


    推荐阅读