【发布时间】:2025-12-12 11:00:02
【问题描述】:
我有以下给出错误的代码:EXC_BAD_ACCESS(代码=2,地址=0x100000000)。错误是由于这行代码造成的:sub->str = s;。
我不太明白为什么会这样,因为我将char(即s)的地址传递给char(即sub->str)的指针。
#include <stdio.h>
#include <stdlib.h>
struct Index {
char *str;
};
typedef struct Index ind;
int fxn_one(char *s)
{
ind *sub;
sub->str = s; // Error due to this line of code.
return (0);
}
int main(int argc, char* argv[])
{
char *p = "test";
int ret = fxn_one(p);
return (0);
}
【问题讨论】:
-
sub指向什么?它是未初始化的,所以它可能指向任何地方。你不能只写随机存储器。 -
ind *sub;声明了一个未初始化的指针。你需要把它指向某个东西。一种方法是ind *sub = malloc(sizeof(*sub));,但您还需要跟踪该指针,以便稍后释放它。现在,一旦函数结束导致内存泄漏,它就会丢失。 -
感谢您的意见。我错过了理解指针的这一方面,误认为它是空指针。