我是从 Python 来到 C 的。Python 有一种非常简单的白手套操作字符串的方法。我在 C 中使用数组的次数越多,我就越觉得拥有某些特性会多么方便。我决定创建一个库来执行此操作,而不是每次我需要执行特定操作时都编写循环来执行此操作。
所以,假设我有一个库,调用看起来像这样:
char* new_array = meatSlicer(old_array, element_start);
我将指针传递给我想要更改的数组,期望指针返回,并指示要切片的元素。
如果meatSlicer
(是的,我是一个错误命名的傻瓜)返回一个指向在切片器中本地创建的数组的指针,则该指针将是一个错误指针。所以,在meatSlicer()
我有这个:
... manipulation before the below ...
char *heap_the_Array; /* put it on the heap to pass it back to caller */
heap_the_Array = malloc((size + 1) * sizeof(char));
int i;
for (i = 0; i <= (size + 1); i++){ /* make it so... again */
heap_the_Array[i] = newArray[i]; /* newArray is the local */
}
return heap_the_Array; /* return pointer */
我的问题是,我是否正确地将所有权归还给调用者函数,以便它可以free()
新数组?传递一个指向堆上数组的指针是否足够?