指针定义的时候分配的内存和用malloc分配的内存有什么不同

2024-11-28 18:39:07
推荐回答(3个)
回答1:

定义指针时给指针分配的内存是用来储存指针所指向的地址的(就相当于你去朋友家,你的朋友给了你一张写着门牌号的纸,这张纸就是指针的内存空间)这个储存空间只有几个字节的大小(地址的大小由系统决定),而malloc是申请出一段内存,用来储存数据,申请的内存大小由malloc内的语句决定(malloc申请出的内存相当于你朋友家的房子),你不可能把你朋友一家放到纸里,必须把他们放到房子里(这里的朋友就相当于你要储存的数据)。

回答2:

定义指针的时候确实会分配,但是是随机分配的,而且这个时候指针是不能使用的,因为你不知道分配的内存在哪,有没有内容,起码需要初始化下才能用。
而malloc后指针会指向heap上的可用空间,这样就算函数被回收,指针还是指向正确的内容,因为指针指向堆上的内容,如果没有那一句malloc,程序会报错uninitialized local variable 'p' used。
有问题可以继续问~

回答3:

定义的时候没有初始化,p可能不是一个有效的指针。