一个关于堆栈的程序在分配空间时出错

发布于 科技 2024-07-20
10个回答
  1. 匿名用户2024-01-31

    您的 ** 错误是:

    没有为 s 分配空间,只需操作 s->base 初始化即可将其更改为以下方式:

    sqstack *s = (sqstack *)malloc(sizeof(sqstack));

    经过测试,发现了最多的 xx 错误之一。

    printf("插入元素:");

    scanf("插入的元素为: %d",&e);

    上面两行内容如下:

    printf("插入的元素为:");

    scanf("%d",&e);

    我乍一看没有看到这个错误,这意味着我也很愚蠢。

    改了以上两个地方后,是否成功的检验是(在将 return 0 添加到 main 函数之前)。

    printf("%d",*(s->top-1));

  2. 匿名用户2024-01-30

    这样改变是可以的。

    int main()

    sqstack s;*修订!! /

    elemtype e;

    printf("插入元素:");

    scanf("插入的元素为: %d",&e);

    initstack(&s);*修订!! /push(&s,e);* 输入 e 值的操作被纳入 main 函数。 */return 0;

    关于堆栈的初始化,我曾经这样写,sqstack *)initstack()。

    sqstack *s;

    s->base=(elemtype *)malloc(stack_init_size*sizeof(elemtype));

    if(!s->base)

    exit(0);

    s->top=s->base;

    s->stacksize=stack_init_size;

    return s;

  3. 匿名用户2024-01-29

    堆栈和堆是内存中打开的空间,CPU提供者搞砸了堆栈的操作,堆栈的空间大小由编译器分配,Microsoft Windows编译器默认为1MB,堆栈大小可以通过stack:reserve[,commit]指定。 MSDN 说明:

    此选项设置堆栈的大小(以字节为单位),参数使用十进制或 C 表示法。 /

  4. 匿名用户2024-01-28

    创建一个新数组,将原始数组的长度加倍,将原始数组的数据复制到新数组中,然后删除原始数组。

  5. 匿名用户2024-01-27

    我是郑先生。 我找不到问题的答案。 不要问。 赶快自己写吧。

  6. 匿名用户2024-01-26

    malloc realloc 只影响堆的空间,而不影响堆栈。

    realloc 不会更改物理内存的位置(以避免重新嫉妒核心)。 但是,可以更改地址映射。

    用户程序不能直接知道数据的物理地址,程序看到的是虚拟地址。

  7. 匿名用户2024-01-25

    重新分配,复制数据。

  8. 匿名用户2024-01-24

    默认值为 1MB。 可以在链接器中调整默认堆栈大小(用于主线程)

    您也可以在通过 API 调用 createthread 创建线程时手动指定堆栈空间,第二个参数是。

  9. 匿名用户2024-01-23

    线程一般不分配任何资源,线程使用的资源是进程,进程的资源大小不固定,不同的进程是不同的。

  10. 匿名用户2024-01-22

    使用读写文件方法获取其长度,然后 char *s = new char[length];

    或者编写自己的字符数组类以支持动态定义长度。

相关回答
10个回答2024-07-20

仍然有必要解释以下前提:在公有制经济下。 >>>More

5个回答2024-07-20

看看你的MATLAB版本,更高版本是@fitness

8个回答2024-07-20

point() 语句定义了一个不带参数的构造函数。 >>>More

15个回答2024-07-20

如果法院按照简易程序进行审理,则案件应自立案之日起三个月内结案。 如果是正常程序,则为6个月。 >>>More

21个回答2024-07-20

如果你在梦中死去,你会回到现实,如果你只有一个梦,但如果你有几个梦,你会回到上一层。 最后,日本人因为迷失在梦中而自杀,却被困在梦中无法脱身,具体原因不记得了,好像他在第一个梦中受了重伤,而当主角在梦中找到他时,他已经在梦中很多年了(梦中的时间比现实中快), 他变成了一个老人,让他自杀就是让他回到现实。