我尝试动态地将内存分配给字符串,但是当我打印出大小时,它显示 4 而不是应该分配的 (11+1) 字节。为什么会出现这种情况?该字符串打印得很好。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char c, *string;
int i=0, a=1;
printf("\nEnter the string : ");
string = (char *) malloc (sizeof(char));
while(c != '\n'){
c = getchar();
string = (char *) realloc (string, sizeof(char) * a);
string[i] = c;
a++, i++;
}
string[i] = '\0';
puts(string);
printf("\n%d", sizeof(string));
}
Input : Sample Text
Output :
Sample Text
4
最佳答案
sizeof 为您提供 char 指针的大小,在您的平台上为 4。
关于c - 动态内存分配给字符串,给出了不正确的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42468005/