This question already has answers here:
How to find the 'sizeof' (a pointer pointing to an array)?
                                
                                    (13个回答)
                                
                        
                                3个月前关闭。
            
                    
这是我的代码:

int newSize = size + 1; //lets say size = 0
char * newArray = malloc(newSize * sizeof(char));
printf("%li", sizeof(newArray)); //Should be 1, prints 8
printf("%li", newSize * sizeof(char)); //Should be 1, prints 1


我不知道为什么要这样做,但是我需要newArray来具有完全newSize个字符点。有任何想法吗?

最佳答案

因为newArray是指针,所以sizeof(newArray)为您提供了指针的大小,而不是指针所指向的缓冲区的大小。

分配内存时,您需要自己跟踪内存的大小,因为该语言无法为您提供找到内存的方法。

关于c - 当我执行malloc(1)时,它会在char *中分配8个空格,我也不知道为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58966908/

10-17 01:51