我沒有進一步的進展這裏編譯和已簽出其他問題時出現此錯誤:警告:函數返回局部變量的地址[-Wreturn-本地地址]
funciones.c:在功能「 Lyapunov':../funciones.c:55:2:warning: 函數返回局部變量的地址[-Wreturn-local-addr]
return rgb;
首先,我在這裏所說的「李雅普諾夫函數在其他的.c: *請注意,在這個「.C」我只貼碼的一部分,其中李雅普諾夫被調用,也rgb的聲明。
unsigned char rgb[3];
while((int)linea>inicial){
for(col=0;col<asize;col++){
rgb = Lyapunov(col,linea);
fwrite(rgb, 3, image);
}
linea++;
}
,並從那裏我得到警告Lyapunov函數是在這裏:
#include "lyapunov.h"
#include <math.h>
#define CLAMP(x) (((x) > 255) ? 255 : ((x) < 0) ? 0 : (x))
unsigned char *Lyapunov(int ai, int bi){
int n, m;
double a, b, lambda, sum_log_deriv, prod_deriv, r, x, rgb_f[3];
unsigned char rgb[3];
double lambda_min = -2.55;
double lambda_max = 0.3959;
a = amin + (amax-amin)/asize*(ai+0.5);
b = bmin + (bmax-bmin)/bsize*(bi+0.5);
x = 0.5;
for (m = 0; m < seq_length; m++) {
r = seq[m] ? b : a;
x = r*x*(1-x);
}
sum_log_deriv = 0;
for (n = 0; n < nmax; n++) {
prod_deriv = 1;
for (m = 0; m < seq_length; m++) {
r = seq[m] ? b : a;
prod_deriv *= r*(1-2*x);
x = r*x*(1-x);
}
sum_log_deriv += log(fabs(prod_deriv));
}
lambda = sum_log_deriv/(nmax*seq_length);
if (lambda > 0) {
rgb_f[2] = lambda/lambda_max;
rgb_f[0] = rgb_f[1] = 0;
} else {
rgb_f[0] = 1 - pow(lambda/lambda_min, 2/3.0);
rgb_f[1] = 1 - pow(lambda/lambda_min, 1/3.0);
rgb_f[2] = 0;
}
rgb[0] = CLAMP(rgb_f[0]*255);
rgb[1] = CLAMP(rgb_f[1]*255);
rgb[2] = CLAMP(rgb_f[2]*255);
return rgb;
}
我認爲必須有某種「的malloc」,但我的努力試圖修復它是一個災難。 預先感謝您。任何幫助表示讚賞。
重複數百次以上。 – 2015-02-23 17:23:46
[警告C4172:返回本地變量或臨時地址]的可能的重複(http://stackoverflow.com/questions/3740151/warning-c4172-returning-address-of-local-variable-or-temporary) – 2015-02-23 17:24:39
你'試着返回'rgb',它是一個本地數組,當你返回時它將超出範圍。 – 2015-02-23 17:24:48