假设我有这样的事情:

char *array,*mat;
array= (char*)malloc(BUFFER * sizeof(char));
fscanf("%s",array);
mat = (char*)malloc(strlen(array) * sizeof(char));
strcpy(mat1, strarr1);

所以基本上,我正在存储一些文本然后复制它,但是如果原始文本小于 BUFFER 大小会发生什么?我的原始数组是否占用了我为其分配的大小,还是只占用了它包含的字符串的大小?

最佳答案

原始数组不改变其大小。它占用您为其分配的确切大小。

您存储在内存位置的数据只是覆盖先前写入该位置的字节。

如果您分配的空间比您使用的空间多(用于您的字符串),则不会触及这些额外的字节,并且它们会保留与以前相同的数据。

如果您分配的空间少于您使用的空间,那么您就会溢出。

关于c - 分配的内存中的空白空间会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44204589/

10-11 21:21