malloc错误“命名管道打开中的内存损坏(快速)

时间:2013-11-25 19:05:42

标签: c++ g++

我正在尝试创建一些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 

1 个答案:

答案 0 :(得分:3)

错字:

int *socket = new int(i);

应该是

int *socket = new int[i];

(你只分配了一个int而不是一个数组。)