我只是在学习 C(在 24 小时内阅读 Sam 的 Teach Yourself C)。我已经完成了指针和内存分配,但现在我想知道它们在一个结构中。
我写了下面的小程序来玩,但我不确定它是否可以。使用 gcc 在 Linux 系统上编译,-Wall
编译的标志没有任何问题,但我不确定它是否 100% 值得信赖。
可以像我在下面所做的那样更改指针的分配大小,还是我可能踩到相邻的内存?我在结构中做了一些前后变量来尝试检查这一点,但不知道这是否有效以及结构元素是否连续存储在内存中(我猜是这样,因为指向结构的指针可以传递给一个函数和通过指针位置操作的结构)。另外,如何访问指针位置的内容并对其进行迭代,以便确保如果它是连续的,则不会覆盖任何内容?我想我要问的一件事是如何以这种方式调试内存混乱以知道它不会破坏任何东西?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct hello {
char *before;
char *message;
char *after;
};
int main (){
struct hello there= {
"Before",
"Hello",
"After",
};
printf("%ld\n", strlen(there.message));
printf("%s\n", there.message);
printf("%d\n", sizeof(there));
there.message = malloc(20 * sizeof(char));
there.message = "Hello, there!";
printf("%ld\n", strlen(there.message));
printf("%s\n", there.message);
printf("%s %s\n", there.before, there.after);
printf("%d\n", sizeof(there));
return 0;
}
我在想有些不对劲,因为我的大小there
没有改变.kj
亲切的问候,