小编use*_*962的帖子

C++中cout/cin的"<<"和">>"是什么意思?

原谅我可能会问一个相当简单的问题,但是插入算子在程序中实际意味着什么呢?(例如cout <</ cin >>)

c++

18
推荐指数
3
解决办法
3万
查看次数

将C和汇编编译为纯机器代码?

我现在真的被卡住了......

vmlinuz二进制文件,MBR和BOOTMGR映像等可启动文件都是用纯二进制/机器代码编写的.但它们是从C和汇编编译而来的 - 即linux内核源代码不仅仅由1和0组成,它由C源组成.我如何将我的汇编和C程序编译为一般x86(在我的情况下为x86-32)微处理器范围的机器代码,以便我可以从这些文件启动.

c binary assembly

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

损坏的双链表:0x0804d0c0(C++)?

注意:我之前从未遇到过这种规模的问题,并且真的不知道如何解决这个问题,如果我把它弄错了那么请解释我应该如何解决它.如果您不能或不会帮助该计划,我很高兴只是了解这个问题.

我一直在编写一段代码来练习面向对象的编程,但是我遇到了一个我以前从未见过的错误(我已经在这里工作了几个月并且没有花很多时间来学习,因为我的时间浪费在义务教育上).内核本身(显然)用我的代码产生了这个错误.但是运行gdb(带有调试符号)并没有让我知道行号.在printf语句中显示,即使条件不再满足,它也会循环一个while循环?这对我来说似乎很奇怪,因为看起来条件不满足,但它仍然循环.它发生错误(我想)发生这种情况的原因是因为它在"Stack"类中的某个地方为整数数组重新分配负大小的内存 - 但是,当我向Stack :: reloc添加if语句以便防止它重新定位负数组大小它仍然会导致错误.向下看它会显示其他几条信息,(引用gdb):

程序接收信号SIGABRT,已中止.__kernel_vsyscall()中的0x0012d422

我没有从SIGABRT的wiki页面中学到太多东西,我不认为十六进制数对我来说意味着什么.这是我的代码,分为两个类和main:

标题:

#include <cstdio>
#include <cstdlib>
Run Code Online (Sandbox Code Playgroud)

类Stack:

class Stack {
private:
    int *stack;
    int size;
    void init(int *top) {
        *top = 0;
    }

    void push2(int *s,int* top, int element) {
        s[(*top)++] = element;
    }

    int pop2(int *s,int *top) {
        return s[--(*top)];
    }
    void reloc(int diff) {
        if ((top+diff)>1) {
            realloc(stack, (size+diff));
            size = size+diff;
        }
    }

public:
    int top;
    Stack() {
        init(&top);
        size = 100;
        stack = (int *)malloc(100 * sizeof(int));
    }
    void …
Run Code Online (Sandbox Code Playgroud)

c++ arrays oop loops sigabrt

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

标签 统计

c++ ×2

arrays ×1

assembly ×1

binary ×1

c ×1

loops ×1

oop ×1

sigabrt ×1