IDE Warning about iteration

I have this code:

#include <Time.h>
#include <TimeLib.h>
#include <SoftwareSerial.h>
#include <TimeAlarms.h>
#include <dht.h>

dht DHT;
#define DHT11_PIN 5
SoftwareSerial sim900(9,10);

int smsSampleCount=0; //how many samples i want in the array
typedef struct {
  int timeStamp;
  double tempSample;
  double humSample;
} samplePoint;

samplePoint finalDataArray[10];


void setup(){
  Serial.begin(9600);
  Alarm.timerRepeat(21600, MainAlarm); //Every 6 hours alarm fires
}

void loop(){
  Alarm.delay(10); // wait one second between clock display
}

void MainAlarm(){
  Serial.println("Main Alarm...");
  int chk = DHT.read11(DHT11_PIN);
  Serial.print("Temperature = ");
  double temp = DHT.temperature;
  Serial.println(DHT.temperature);
  Serial.print("Humidity = ");
  double hum = DHT.humidity;
  Serial.println(DHT.humidity);
  
  //Check every 6 hours, if smsSampleCount reached 8, store it...
  if (smsSampleCount<8) {
    finalDataArray[smsSampleCount].timeStamp = smsSampleCount;
    finalDataArray[smsSampleCount].tempSample = temp;
    finalDataArray[smsSampleCount].humSample = hum;
    smsSampleCount++;
   } else { // else reset counter and send data.
    smsSampleCount=0;
    sendData();
   }
}

void sendData(){
  //Setup local vars for temp/hum strings
  static char outTempStr[15];
  static char outHumStr[15];
  static String finalString;
  
  for (int i=0; i<sizeof(finalDataArray)-1;i++){
    String tempString = dtostrf(finalDataArray[i].tempSample,5,2,outTempStr);
    String humString = dtostrf(finalDataArray[i].humSample,5,2,outHumStr);
    finalString = finalString+":"+tempString+"/"+humString+"-";
  }

  //Actually send data
  delay(5000);
  sim900.print("\r");
  delay(1000);
  sim900.print("AT+CMGF=1\r"); //text mode
  delay(1000);
  sim900.print("AT+CMGS=\"+mynumber\"\r");
  delay(1000);
  sim900.print(finalString + "\r"); //The text for the message
  Serial.println("sent!");
  delay(1000);
  sim900.write(0x1a); //Equivalent to sending Ctrl+Z
  sim900.println(char(26));
  Serial.println("done!!");
}

and Im getting this warning (why?):

/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino: In function 'sendData()':
/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino:63:76: warning: iteration 10 invokes undefined behavior [-Waggressive-loop-optimizations]
     String tempString = dtostrf(finalDataArray[i].tempSample,5,2,outTempStr);
                                                                            ^
/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino:62:3: note: containing loop
   for (int i=0; i<sizeof(finalDataArray)-1;i++){
   ^
/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino: In function 'MainAlarm':
/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino:63:76: warning: iteration 10 invokes undefined behavior [-Waggressive-loop-optimizations]
     String tempString = dtostrf(finalDataArray[i].tempSample,5,2,outTempStr);
                                                                            ^
/Users/quique123/Documents/Arduino/TempMonitorGPRSw_oLibrary/TempMonitorGPRSw_oLibrary.ino:62:3: note: containing loop
   for (int i=0; i<sizeof(finalDataArray)-1;i++){
   ^
for (int i=0; i<sizeof(finalDataArray)-1;i++){
    String tempString = dtostrf(finalDataArray[i].tempSample,5,2,outTempStr);
    String humString = dtostrf(finalDataArray[i].humSample,5,2,outHumStr);
    finalString = finalString+":"+tempString+"/"+humString+"-";
  }

sizeof() will return the number of bytes occupied by finalDataArray, not the number of elements in the array.