我有以下代码。
command = %q|someapp.exe -n "conf:conf_abc:\"Acc...|
system(command)
在上面的代码中,
答案 0 :(得分:4)
正如free
的手册页告诉你的那样,除malloc
返回的指针之外的任何参数都有未定义的行为:
free()函数释放ptr指向的内存空间,该内存空间必须由之前调用malloc(),calloc()或realloc()返回。否则,或者如果之前已经调用了free(ptr),则会发生未定义的行为。如果ptr为NULL,则不执行任何操作
关于free
如何知道块的大小:典型的内存分配器实现有每个块的头(包含大小,空闲列表指针等),free
知道此头的大小以及malloc
返回的指针的偏移量。
这也回答了你的第一个问题:malloc
分配了这样一个块并返回指向实际对象开头的指针。