Fra*_*lea 5 c pointers memory-management pointer-arithmetic
我正在慢慢掌握指针.但是我还有一些问题.
使用指针运算时是否可能导致内存泄漏,因为您正在移动指针指向的实际位置?
我的意思是,如果说我向上计数要用char复制字符串char,我是否需要倒数以便C"知道"指针指向的位置?
谢谢弗兰克
使用malloc()或类似功能时可能会发生内存泄漏,而free()在需要时不会调用.free()应始终使用返回的指针调用,malloc()如果您执行以下操作,则为yes:
int* ptr = malloc(sizeof(int));
free(ptr + 1);
Run Code Online (Sandbox Code Playgroud)
导致未定义的行为.可能是内存泄漏,可能是分段错误,一切皆有可能.
内存在堆上分配.指针就是指向内存中位置的指针.您需要知道已分配内存的起始地址,以便以后释放它.
这是因为内存管理系统需要记住有关已分配内存的信息(例如分配了多少内容),因此它知道稍后要释放多少,并防止它将同一块分配给另一个malloc调用.内存的起始地址是标识它的内容.
如果你想摆弄指针,请复制它,不要修改原始指针.
int *x = malloc(...);
int *y = x;
... pointer arithmetic with y
free(x);
Run Code Online (Sandbox Code Playgroud)