c - c 中的 sbrk 和 malloc

标签 c malloc sbrk

我有以下代码

#include<stdio.h>
int main () {
        void *result[20];
        void *endptr;
        void *x;
        for (i = 0; i < 20; i++) {
                result[i] = malloc(10);
                printf("111 : %d\n",result[i]);
        }
        endptr= sbrk(0);
        printf("\n222 : %d\n",endptr);
        x = malloc(60); ----------- error
        return 0;
}

我想打印所有 void 指针的数值以及 sbrk 函数调用 form malloc 的次数?

如果我在 printf 语句中打印 *endptr,它会报错。目前我认为它会打印分配内存的地址。 %x 只是将当前值转换为十六进制并正确打印吗?

x = malloc(60) 也给出错误:void value not ignored as it should be 我该怎么做?

谢谢

最佳答案

sbrk(0) 返回“程序中断”的当前大小,它实际上不是一个指针,因此取消引用它会出错。

http://en.wikipedia.org/wiki/Sbrk

http://pubs.opengroup.org/onlinepubs/007908799/xsh/brk.html

关于c - c 中的 sbrk 和 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091416/

相关文章:

c - 如何将变量分配给控件的内容

c - TDM-GCC - 在 Kernighan & Ritchie 的存储分配器实现程序中未定义对 sbrk() 的引用

c++ - Matlab 中 'textscan' 函数的 C++ 翻译是什么?

C 编程 switch 语句查找数字或字母

C 程序仅在 Visual Studio 中的 Debug模式下,以编程方式更改 argv 在程序退出后会出现堆损坏错误。如何解决?

c - 为什么这个程序不创建核心转储?

c - 简单测试程序中无法解释的 malloc 调用 : malloc project

c - x86 程序集中的结构分配

c - 程序仅在首次运行时挂起?

linux - 用 `sbrk` 替换 `mmap`