小编Tha*_*lla的帖子

双重免费或腐败(fasttop)

我的代码的以下部分在执行*glibc检测时给出了这个消息./a.out:双重免费或损坏(fasttop):0x08e065d0**

我已经多次通过代码,但我不能清楚看到我如何滥用 free (temp2)

bool found= false;
int x=0;
for ( x=0; x<=312500; x++)
{
    while (count <=32)
    {
        fscanf (file, "%d", &temp->num);  

        temp->ptr=NULL;

        newNode = (NODE *)malloc(sizeof(NODE));
        newNode->num=temp->num;
        newNode->ptr=NULL;

        if (first != NULL)
        {
            temp2=(NODE *)malloc(sizeof(NODE));

            temp2=first;
            while (temp2 != NULL && !found)
            {
                if (temp2->num == newNode->num) 
                {found=true;}

                temp2= temp2->ptr;
            }

            free(temp2);

            if (!found)
            { 
                last->ptr=newNode;
                last=newNode;
                count=count+1;
            }   
        }   
        else  
        {
            first = newNode;
            last = newNode;
            count=count+1;
        }

        fflush(stdin);
    }
Run Code Online (Sandbox Code Playgroud)

c coredump linked-list double-free

14
推荐指数
1
解决办法
7万
查看次数

错误:'O_CREATE'未声明(首次使用此功能)

以下代码应该同步两个进程,一个编写一些整数的生产者,以及一个读取它们的消费者,现在执行它时会给我这个错误:

‘O_CREATE’ undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)

但我已经包括了fcntl.h,还有什么可能是问题?

int main(void) 
{
int fd, n, i; 
pid_t pid, ppid; 
char buf[1];
if((fd=open("/tmp/data_file", O_APPEND|O_CREATE, 0640)) <0) exit(1);
sigset(SIGTERM,SIG_IGN);/* signal */   ; sigset(SIGINT,SIG_IGN); /* signal */ 
pid=fork(); 
switch (pid) { 
    case -1: { perror(“FORK”); exit(1); }
    case 0: /* child process - Producer */ 
        sigset(SIGUSR1,wakeup);   
        sighold(SIGUSR1);       /* block / hold signals SIGUSR1 until sigpause*/ 
        for (i=0; i<=100; i++) { 
            /* sleep a random amount of time */ 
            n = (int)(getpid()%256); …
Run Code Online (Sandbox Code Playgroud)

c linux signals producer-consumer

2
推荐指数
1
解决办法
2130
查看次数

如何在国际象棋比赛中实现运动?

我正在学习使用Windows表格C#制作一个小型的国际象棋游戏,游戏只包括双方的棋子,我已经画了板并组织了那些地方的作品,但老实说我不知道​​如何开始实施通过单击工件上的鼠标移动,然后移动我要移动它的位置.

作为参考,黑色棋子被命名为棋子,白色棋子被命名为棋子

这是我的董事会代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace AIchess
    {
        public partial class Form1 : Form
        {
            static System.Drawing.Bitmap piece = AIchess.Properties.Resources.piece;
            ChessPiece Piece = new ChessPiece(piece, ChessColor.Black);

            static System.Drawing.Bitmap pieceW = AIchess.Properties.Resources.pieceW;
            ChessPiece PieceW = new ChessPiece(pieceW, ChessColor.White);

            Square[,] square = new Square[8, 8];
            public Form1()
            {
                InitializeComponent();
                int i, j;

                for (i = 0; i < 8; i++)
                {
                    for (j = 0; j …
Run Code Online (Sandbox Code Playgroud)

c# chess winforms

2
推荐指数
1
解决办法
4679
查看次数