为什么char双指针的第一项正在损坏
在我的程序中,我不明白我在哪里犯了错误。第一个指针缓冲区正在损坏,其余缓冲区正常。Gcc版本是“Gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3”。 请帮忙。。。 谢谢 代码:为什么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
您正在溢出缓冲区:
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