c - Why do I get a segmentation fault when I try to add a NUL terminator at the end of my string? -
according gdb, segmentation fault when try assign '\0'
last position in request_line
. can't use memory on heap (alloc
, malloc
, calloc
) since server implementation control handlers can make hard free space.
the size of request_targetsize
24, correct.
#include <string.h> #include <stdio.h> int main() { const char line[80] = "get /index.html/search?q=cat http/1.1"; char *abs_path; char *str = null; char *request_target= null; char *query = null; //get request target char* startofrequest_target = strchr(line, '/'); char* endofrequest_target = strchr(startofrequest_target, ' '); int request_targetsize = endofrequest_target - startofrequest_target; if (startofrequest_target != null && endofrequest_target != null) { memcpy(request_target, startofrequest_target, request_targetsize); request_target[request_targetsize] = '\0'; } ....
my guess has initializing request_target
array null
, error if don't.
why segmentation fault? also, why need assign char* variables null
, not?
the problem see with
memcpy(request_target, startofrequest_target, request_targetsize);
here, request_target
null , you're trying write it. invokes undefined behavior hence seg fault.
instead of making request_target
pointer, consider using array,
char request_target[80]= {0};
Comments
Post a Comment