我有一个结构:
struct server
{
ssize_t (*handler)(char *, void*);
};
typedef struct server server;
在另一个函数中,我按如下方式分配函数指针,
void setHandler(server *s, ssize_t (*handler)(char *, void*)){
s->handler = handler;
}
并调用函数指针
void perform(server *s){
.
.
(s->handler)(path, NULL);
.
.
}
但是我收到以下AddressSanitizer错误,
AddressSanitizer: heap-buffer-overflow on address 0x60200000eff8 at pc 0x0000004b111e bp 0x7fffd76687e0 sp 0x7fffd76687d0\nWRITE of size 8 at 0x60200000eff8 thread T0\n #0 0x4b111d in setHandler /home/vmuser_xghkzivu/workspace/server_main.c:179\n
我的代码似乎与我提到的所有其他示例一致,但我不确定我在这里做错了什么。