[英]returning int array when return type is int *
我有一個這樣描述的功能
int * oddNumbers(l, r, int* result_size){
static int res[r-l];
int index = 0;
while(l < r){
if(l % 2 != 0){
res[index] = l;
index++;
}
l++;
}
result_size = &index;
return res;
}
這是我已解決的問題。 我不明白的是如何返回整數數組。 我已經找到了多種方法來做到這一點。 聲明變量靜態,並為該變量分配內存。
我知道執行此操作的行業方法是允許調用方為返回值分配內存。 但是,不幸的是,我只能通過此功能訪問程序的那部分。
任何幫助將不勝感激。
通常通過動態內存分配解決此問題。
在極少數情況下,當您無權訪問malloc
/ free
,可以滾動自己的內存分配器。 這是一個“僅分配”示例,該示例產生的指針達到特定的預分配限制:
#define MAX_SIZE 65536
int * oddNumbers(int l, int r, int* result_size){
static int raw[MAX_SIZE];
static int* current = raw;
int size = r-l;
// Make sure that allocation size is positive
if (size <= 0) {
return NULL;
}
// Make sure we have enough available memory remaining in raw[]
ptrdiff_t available = &raw[MAX_SIZE] - current;
if (available < size) {
return NULL;
}
// Allocate "size" elements from raw
int *res = current;
current += size;
int index = 0;
while(l < r){
if(l % 2 != 0){
res[index++] = l;
}
l++;
}
return res;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.