游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1291|回复: 1

malloc 非法操作问题

[复制链接]

8

主题

35

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2004-4-8 12:46:00 | 显示全部楼层 |阅读模式
在malloc执行过程中出现非法操作是怎么回事 ?


  1. void WaypointAddPath(edict_t *pEntity, short int add_index, short int path_index, float fDistance)
  2. {
  3.    int i;

  4.    if (add_index == path_index)
  5.       return; // Deny creation of paths from any waypoint to itself

  6.    if (IsConnectedWithWaypoint(add_index, path_index))
  7.       return; // Don't allow paths get connected twice

  8.    // ALERT(at_console, "Path added from %d to %d\n", add_index, path_index);

  9.    PATH *p = paths[add_index];
  10.    PATH *prev = NULL;

  11.    // Check for free space in the connection indices
  12.    while (p != NULL)
  13.    {
  14.       for (i = 0; i < MAX_PATH_INDEX; i++)
  15.       {
  16.          if (p->index[i] == -1)
  17.          {
  18.             p->index[i] = path_index;
  19.             p->distance[i] = fDistance;
  20.             p->connectflag[i] = 0;
  21.             p->vecConnectVel[i] = g_vecZero;
  22.             p->distance[i] = 0;  
  23.             return;
  24.          }
  25.       }

  26.       prev = p;     // save the previous node in linked list
  27.       p = p->next;  // go to next node in linked list
  28.    }

  29.    // There wasn't any free space
  30.    p = (PATH *)malloc(sizeof(PATH));  // !!! 非法操作 !!!

  31.    for (i = 0; i < MAX_PATH_INDEX; i++)
  32.    {
  33.       p->index[i] = -1;
  34.       p->connectflag[i] = 0;
  35.       p->vecConnectVel[i] = g_vecZero;
  36.       p->distance[i] = 0;  
  37.    }

  38.    p->index[0] = path_index;
  39.    p->distance[0] = fDistance;
  40.    p->next = NULL;

  41.    if (prev != NULL)
  42.       prev->next = p;  // link new node into existing list

  43.    if (paths[add_index] == NULL)
  44.       paths[add_index] = p;  // save head point if necessary
  45. }
复制代码


call stack 基本是这样的:
malloc_*** (记不请了)
malloc_***
malloc
WaypointAddPath
WaypointLoad
DispatchSpawn

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-8 17:02:00 | 显示全部楼层

Re:malloc 非法操作问题

是不是 sizeof(PATH) 参数有问题?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-16 16:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表