【发布时间】:2011-01-16 14:57:27
【问题描述】:
我正在尝试将字符串读入程序。当我注意到字符串有时被损坏时,我尝试了以下代码:
void *mallocated = malloc(100);
printf("sizeof(mallocated) = %d\n", sizeof(mallocated));
根据我的程序,mallocated 的大小是8,尽管我为它分配了 100 个字节。因此,每当我尝试存储超过 8 个字节的字符串时,第 8 个字节之后的所有内容有时都会消失。为什么会发生这种情况,我该如何预防?
【问题讨论】:
-
sizeof(mallocated) 将为您提供 void* 的大小,在您的 64 位系统上为 8 个字节。如何使用 strcpy 将字符串分配给该变量?
-
您的结论也是错误的,在第 8 个“字节”(不是位)之后写入的任何内容有时都不会随机消失。