Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何处理此错误?(检测到堆栈崩溃已中止(内核转储))_C - Fatal编程技术网

C 如何处理此错误?(检测到堆栈崩溃已中止(内核转储))

C 如何处理此错误?(检测到堆栈崩溃已中止(内核转储)),c,C,你好!!这是我的密码 源代码的结果导致堆栈崩溃错误 我认为这个代码-read(fdata,&data\u cont,1)-有一些问题(堆栈溢出) 但我无法用适当的表达式来替换它 你能帮帮我吗?主要问题可能是这条线路 dd if=/dev/zero of=histogram.bin bs=4 count=256 如果i介于0和9之间,则上面的行尝试用10个字符填充缓冲区,例如data0.bin\0。如果i更大,则字符串甚至更长。不幸的是,您只将fdName定义为八个字节长 还有一些其他问题 sp

你好!!这是我的密码

源代码的结果导致堆栈崩溃错误

我认为这个代码-
read(fdata,&data\u cont,1)-有一些问题(堆栈溢出)

但我无法用适当的表达式来替换它


你能帮帮我吗?

主要问题可能是这条线路

dd if=/dev/zero of=histogram.bin bs=4 count=256
如果
i
介于0和9之间,则上面的行尝试用10个字符填充缓冲区,例如
data0.bin\0
。如果
i
更大,则字符串甚至更长。不幸的是,您只将
fdName
定义为八个字节长

还有一些其他问题

sprintf(fdname,"data%d.bin", i);
如果
j
大于252,则读数超出
hisSum
的末尾

main
中,您不必检查以确保
argc
至少为3


此外,当您使用写入文件描述符覆盖时,会泄漏
fhist
读取文件描述符。不首先关闭它。

字符串
“data%d.bin”
将至少包含10个字符(不要忘记终止符!)。然后尝试将其放入8个字符的数组中。
read
没有任何错误,只是没有检查返回值。它将一个字节读入无符号字符的地址。很好。
sprintf(fdname,"data%d.bin", i);
for(j=0;j<256*256;j++)
{
    read(fdata,&data_cont,1);
    hisSum[data_cont]++;
}
for(j=0;j<256;j++)
    write(fhist, hisSum+j, 4);