c - 动态内存分配给字符串,给出了不正确的大小

标签 c sizeof dynamic-memory-allocation

我尝试动态地将内存分配给字符串,但是当我打印出大小时,它显示 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/

相关文章:

c - int 类型的数组不会从函数调用中修改

c - 使用 SizeOf 时收到警告

c - 我不明白为什么我们将 "&"放在 ageAmis 的 scanf 中,而 ageAmis 是一个指针?

c - 在 C 中为队列的前面元素分配内存时出现段错误

c - 如何获取选项卡项的TCITEM结构?

c++ - 使用 gdb 调试基于参数的 C 程序

c++ - sizeof 和 alignof 有什么区别?

c - for循环中的动态内存分配

c - Scanf 中 & 运算符的使用

C 字符串取消引用然后重新引用行为奇怪吗?