为什么char双指针的第一项正在损坏

为什么char双指针的第一项正在损坏,c,pointers,C,Pointers,在我的程序中,我不明白我在哪里犯了错误。第一个指针缓冲区正在损坏,其余缓冲区正常。Gcc版本是“Gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3”。 请帮忙。。。 谢谢 代码: 您正在溢出缓冲区: buff = (char **) malloc(sizeof(char *)); // a single char* is allocated for(i = 0; i < 10; i++) { buff[i] // when i is 1 it's out

在我的程序中,我不明白我在哪里犯了错误。第一个指针缓冲区正在损坏,其余缓冲区正常。Gcc版本是“Gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3”。 请帮忙。。。 谢谢

代码:


您正在溢出缓冲区:

buff = (char **) malloc(sizeof(char *)); // a single char* is allocated
for(i = 0; i < 10; i++)
{
    buff[i] // when i is 1 it's out of bounds
buff=(char**)malloc(sizeof(char*);//分配一个字符* 对于(i=0;i<10;i++) { buff[i]//当我1岁时,它就出界了
砰的一声,你死了。未定义的行为。

buff=(char**)malloc(sizeof(char*);
为一个
char*
指针创建内存,但随后你将其中的10个指针存储在那里。它应该是
malloc(sizeof(char*)*10);
。这是编译器的惩罚,因为你正在铸造
malloc的返回值
@duDE;不幸的是,它对您有效。此外,还有另一个未定义的行为:您正在打印带有
%u
的指针,该指针不是用于指针,而是用于
无符号int
s。
buff = (char **) malloc(sizeof(char *)); // a single char* is allocated
for(i = 0; i < 10; i++)
{
    buff[i] // when i is 1 it's out of bounds