标签: stack

0
推荐指数
1
解决办法
2046
查看次数

0
推荐指数
1
解决办法
185
查看次数

您将如何确定堆栈在系统中是成长还是下降?

可能的重复:
堆栈增长方向
堆栈是向上还是向下增长?

大家好,

我怎样才能知道机器的堆栈是否在C内存中增长或减少.更重要的是,哪个更好:堆栈增长的系统还是堆栈增长的系统?

以下逻辑工作???

void sub(int *a) 
{
int b;

if (&b > a) {
printf("Stack grows up.");
}
else  
{
printf("Stack grows down.");
}
}
main ()
{
int a;
sub(&a);
}
Run Code Online (Sandbox Code Playgroud)

我的意思是这个表达式在C中有效

if (&b > a) 
Run Code Online (Sandbox Code Playgroud)

c stack

0
推荐指数
1
解决办法
2683
查看次数

如何在Java中使这些数据结构实现通用?

我已经编写了自己的StackQueue实现,但我已经使它们专门用于整数.我深知Java实现的,java.util.Stackjava.util.Queue,但我这样做是为学习经验......只是想学习新的东西.我如何制作这些通用实现,以便我可以在Stack/Queue中存储任何对象,而不仅仅是整数?

以下是代码,但我也欢迎所有关于改进的批评和建议.我想知道我做得很好以及我做得不好.

堆叠节点实现

public class StackNode {

    public Integer value;

    public StackNode() {
        this.value = null;
    }

    public StackNode(StackNode node) {
        this.value = node.value;
    }

    public StackNode(Integer data) {
        this.value = data;
    }
}
Run Code Online (Sandbox Code Playgroud)

堆叠实施

/**
 * Stack Data Structure.
 * 
 * A Stack is a last in, first out (LIFO) data structure. A Stack can have any abstract data type as an element, but is
 * characterized by two fundamental operations: …
Run Code Online (Sandbox Code Playgroud)

java generics queue collections stack

0
推荐指数
1
解决办法
2207
查看次数

此功能是否保证内联扩展

我在工作中经历了一些代码,我发现了这一点

inline
  FLAGS get_flags(void) {
  FLAGS res;
  memset(&res, 0, sizeof(res));
  return res
}
Run Code Online (Sandbox Code Playgroud)

这是在程序中包含的头文件中声明的.我意识到,如果没有内联,因为这是在堆栈上分配的,这将是一件非常糟糕的事情.我们从未遇到过相关代码的问题,但我对此感到好奇.

c c++ stack inline

0
推荐指数
1
解决办法
756
查看次数

c堆栈变量​​已损坏

我已经阅读了所有关于此类问题的问题,但我无法修复我的问题.问题是我使用一个函数从文件中读取数据,我得到这个错误:"堆栈变量'p'被破坏了"这是函数

Firm readFirm(char* name)
{
FILE* file = NULL;
int i = 0;
Firm firm;
char line[100];
char* p[5] = {(char*)malloc(50)};

char tmp[50];
strcpy(tmp,name);
strcat(tmp,".txt");
file = fopen(tmp,"rb");

getline(file,line,100);
strcpy(firm.name,line);
getline(file,line,100);
strcpy(firm.EIK,line);
getline(file,line,100);
split(p,line," ");
for (i = 0 ; p[i] != NULL; i++)
    firm.price[i] = atoi(p[i]);
getline(file,line,100);

split(p,line,".");
firm.day = atoi(p[0]);
firm.month = atoi(p[1]);
firm.year = atoi(p[2]);
fclose(file);
return firm;

}
Run Code Online (Sandbox Code Playgroud)

请帮助,因为我不知道如何解决它!

这是拆分功能:

char ** split( char *result[], char *w, const char *delim)
{
int i=0;
char *p=NULL;
for(i=0, …
Run Code Online (Sandbox Code Playgroud)

c stack

0
推荐指数
1
解决办法
1124
查看次数

如何在此堆栈中打印值?

我找到了一些代码来实现堆栈的C实现,并决定使用它.但是,有几个typedef,我很难在stackT中打印值(实际上是一个char数组).下面是代码.我究竟做错了什么?

#include <stdio.h>
#include <stdlib.h>

typedef char stackElementT;

typedef struct {
  stackElementT *contents;
  int maxSize;
  int top;
} stackT;

void StackInit(stackT *stackP, int maxSize) {
    stackElementT *newContents;
    newContents = (stackElementT *)malloc(sizeof(stackElementT)*maxSize);
    if (newContents == NULL) {
        fprintf(stderr, "Not enough memory.\n");
        exit(1);
    }

    stackP->contents = newContents;
    stackP->maxSize = maxSize;
    stackP->top = -1; //empty...
}

void StackDestroy(stackT *stackP) {
    free(stackP->contents);
    stackP->contents = NULL;
    stackP->maxSize = 0;
    stackP->top = -1; //empty
}

int StackIsEmpty(stackT *stackP) {
    return stackP->top < 0;
}

int StackIsFull(stackT …

c printing stack typedef

0
推荐指数
1
解决办法
354
查看次数

返回alloca指针

此代码是否返回对堆栈上分配的变量的无效引用?或者是什么:

void *f(size_t sz) {
    return alloca(sz);
}
Run Code Online (Sandbox Code Playgroud)

或者这是一个由alloca实现/编译器支持处理的特殊情况f(alloca(size), alloca(size))

c stack pointers memory-management alloca

0
推荐指数
1
解决办法
735
查看次数

这段代码是不确定的行为?OS和堆怎么样?操作系统如何处理堆栈?

char * s;
s[400] = 'd';
Run Code Online (Sandbox Code Playgroud)

如果它不是未定义的行为,那么这是否意味着我不能随意访问堆栈外部RAM的任何部分?所以每次操作系统启动一个进程时,它都会分配一个RAM区域,我可以在那里做一些讨厌的东西(mallocs除外),因为操作系统会在进程完成后清理堆栈.

为什么操作系统在进程结束后无法清理堆?这是否意味着堆与所有其他进程共享?

如果我在堆栈中放入太多数据,那就是缓冲区溢出,但是我可以放入多少堆栈?是OS绑定,RAM大小绑定还是CPU缓存绑定?

c heap stack operating-system

0
推荐指数
1
解决办法
152
查看次数

为什么我的推送和流行方法不起作用?

我正在尝试在Perl中实现一个堆栈,我有一个数组.我想推送数组上的项目,弹出项目并打印出新的数组,如下所示:"1,2,3,5,6

我怎样才能做到这一点?我的代码只是将数字6添加到数组的顶部.

#!usr/bin/perl

@array = 1..5;
push @array, 6; #Push the number 6 into the array 
pop @array, 4; #Pop the number 4 out of the array
print "The array is now $array[-1].\n";
Run Code Online (Sandbox Code Playgroud)

perl stack

0
推荐指数
2
解决办法
1139
查看次数