# include
# include
# include
# include
# define TRUE 1
# define FALSE 0
# define OK 1
# define ERROR 0
# define OVERFLOW -1
struct sqlist
{
int * p;
int length;
int listsize;
}sqlist;
int Initlist_sq(struct sqlist * L, int LIST_INIT_SIZE)
{
L->p = (int * )malloc(LIST_INIT_SIZE * sizeof(int));
if ( L->p== NULL ) exit(OVERFLOW);
L->length = 0;
L->listsize = LIST_INIT_SIZE;
return OK;
}
void main()
{
struct sqlist * p;
int status = 0;
status = Initlist_sq(p, 100);
if( status)
printf("memory allocation succeed\n");
else
printf("memory allocation failed\n");
}
superherogood 于 2011-02-09 16:41:40发表:
int *p 只能是指向int型的指针,而不能指向int型的数组,明显“status = Initlist_sq(&p, 100);”这里使得
struct sqlist中的int型指针p越界。
glxin1982 于 2010-05-14 17:36:31发表:
status = Initlist_sq(p, 100); 之前应该先给p maclloc地址。话说我前两天就犯了类似的错误,被同事BS了下。
liuchun12255 于 2010-05-14 14:31:28发表:
引用了没有初始化的指针! 即引用了不该引用的地址!
shenhao0129 于 2010-05-07 10:50:39发表:
后来想想,应该就是结构体指针本身没有初始化的原因把,你只是初始化了他的成员变量
shenhao0129 于 2010-05-07 10:48:33发表:
将main()函数修改为[code]void main()
{
struct sqlist p;
int status = 0;
status = Initlist_sq(&p, 100);
if( status)
printf("memory allocation succeed\n");
else
printf("memory allocation failed\n");
}[/code]是可以通过,不明白为什么指针就死活的不可以,也许真如LS所说是个空指针把
hongwen64 于 2010-05-02 22:03:18发表:
p没初始化,是空指针。
mcc天皇 于 2010-04-26 23:05:59发表:
{:2_97:}
shenhao0129 于 2010-04-26 23:04:36发表:
明天切换到Linux下帮你debug一下试试,表面上暂时没看出问题在那