gpt4 book ai didi

c - 读写动态分配的内存

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:46 28 4
gpt4 key购买 nike

我有一些代码包含以下部分:

typedef unsigned long long int ulli_t;
typedef unsigned int obj_t;
// --- SOME UNIMPORTANT PART OF CODE
objects = (obj_t*)malloc(hw*sizeof(obj_t));
objNums = (ulli_t*)calloc(hw, sizeof(ulli_t));
printf("%#x, %#x\n", objects, objNums);
// --- SOME UNIMPORTANT CODE
/// NEXT PART IS for-CYCLED
objNums[k] ++;
if (k>=Nobj) {
objects[k] = obj;
Nobj++;
printf(" %lu - %#x - %#x\n", k, objects+k, objNums+k);
};

我得到了这部分代码的输出:

0xaafdf9d8, 0xaad693b0
0 - 0 - 0xaafdf9d8
1 - 0 - 0xaafdf9dc
2 - 0 - 0xaafdf9e0
3 - 0 - 0xaafdf9e4
4 - 0 - 0xaafdf9e8
5 - 0 - 0xaafdf9ec
6 - 0 - 0xaafdf9f0
7 - 0 - 0xaafdf9f4
8 - 0 - 0xaafdf9f8
9 - 0 - 0xaafdf9fc
10 - 0 - 0xaafdfa00
11 - 0 - 0xaafdfa04

那么,问题来了 - 如果“objects”变量不为零,那么为什么“objects+k”为零?当我做的时候:

printf(" %lu - %#x - %#x\n", k, objects[k], objNums[k]);

我得到这样的行:

value of k - 0 - hex value of objNums[k]

这是为什么呢?想到那件事,我的大脑已经崩溃了。

最佳答案

您正在使用 %lu 打印您的 long long。你应该使用 %llu。

关于c - 读写动态分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com