我正在尝试创建一些N个名称管道(fifo)。打开14 fifo后我得到一些stratnge错误。以下是我的代码: -
int main(int argc, char **argv)
{
if(argc != 2)
{
fprintf(stderr, "Usage:- fifo <number of fds> \n");
exit(1);
}
int i = atoi(argv[1]);
int *socket = new int(i);
char cc[10];
std::string fifo = "event.fifo";
for(int j=0; j<i; ++j)
{
fifo = "event.fifo";
sprintf(cc, "%d", j);
fifo += cc;
unlink(fifo.c_str());
if (mkfifo(fifo.c_str(), 0600) == -1)
{
perror("mkfifo");
exit(1);
}
socket[j] = open(fifo.c_str(), O_RDONLY | O_NONBLOCK, 0);
if (socket[j] == -1)
{
perror("open");
exit(1);
}
fprintf(stderr, "Fifo created %s\n", fifo.c_str());
}
fprintf(stderr, "\n============================================\n");
return 0;
}
我的程序没有崩溃,但它给了我错误: -
Error in `./fifo': malloc(): memory corruption (fast): 0x09293018
答案 0 :(得分:3)
错字:
int *socket = new int(i);
应该是
int *socket = new int[i];
(你只分配了一个int而不是一个数组。)