*** stack smashing detected ***: terminated aborted

C Intermediário matriz Structs Laços de repetição C vetor Funções Vetores Calculo numérico constantes variáveis Estruturas

Opa, poderia me ajudar?

O caso é o seguinte:

#include <stdlib.h>

#include <stdio.h>

#define tamanho 10

 

int* alocaVetor(){

 

int *aux;

 

aux = (int*) malloc(tamanho * sizeof(int));

}

 

int multiplica(int *vetorX, int *vetorY){

    for(int i = 0; i < tamanho; i++) {

        int resto = i % 2;

        

        if(resto == 0){

        vetorY[i] = vetorX[i] * 2;

        

        }else{

            vetorY[i] = vetorX[i] * 3;

 

        

        }

    }

}

 

int main() {

    int vetorX[tamanho] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int vetorY[tamanho];

    multiplica(vetorX, vetorY);

 

    vetorX[tamanho] = alocaVetor(tamanho);

    vetorY[tamanho] = alocaVetor(tamanho);

    

    for(int i = 0; i < tamanho; i++){

        printf("VetorY eh de: %d\n", vetorY[i]);

        }

    }


Estou com um problema em que quando eu executo este código com implementação da alocação dinâmica de memória, ele dá esse erro após todo o processo:

“*** stack smashing detected *** : terminated
Aborted”

Output:

VetorY eh de: 6

VetorY eh de: 6

VetorY eh de: 12

VetorY eh de: 10

VetorY eh de: 18

VetorY eh de: 14

VetorY eh de: 24

VetorY eh de: 18

VetorY eh de: 30

*** stack smashing detected ***: terminated

Aborted

Quando eu altero o define para 11, o erro some, mas gera um valor 0 do vetorY, e eu não quero isso. Poderia me ajudar?

Foto de Eric S.
Eric perguntou há 3 anos

Sabe a resposta?

Ganhe 10 pts por resposta de qualidade
Responder dúvida
1 resposta
0
votos
Nenhum usuário votou nessa resposta como útil.
Professor Carlos R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 3 anos

#include <stdlib.h>
#include <stdio.h>
#define tamanho 10

int* alocaVetor(){
 int *aux;
 aux = (int*) malloc(tamanho * sizeof(int));
 return aux;
}

int multiplica(int *vetorX, int *vetorY){
 for(int i = 0; i < tamanho; i++) {
  int resto = i % 2;
  if(resto == 0){
   vetorY[i] = vetorX[i] * 2;
         }else{
              vetorY[i] = vetorX[i] * 3;
        }
    }
}

int main() {
    int *vetorX;
    int *vetorY;
    vetorX = alocaVetor();
    vetorY = alocaVetor();
    for(int i = 0; i < tamanho; i++){
        vetorX[i]=i+1;
    }
    multiplica(vetorX, vetorY);
    for(int i = 0; i < tamanho; i++){
        printf("VetorY eh de: %d\n", vetorY[i]);
    }
    free( vetorX );
    free( vetorY );
}

Alterei o código inteiro. Qualquer dúvida entre em contato

Envie uma dúvida gratuitamente

Envie sua primeira dúvida gratuitamente aqui no Tira-dúvidas Profes. Nossos professores particulares estão aqui para te ajudar.

Professores particulares de C

+ Ver todos
Encontre professor particular para te ajudar nos estudos
R$ 75 / h
Carlos R.
Campinas / SP
Carlos R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
C - Geral Programação em C Intermediário Estrutura de dados em C
Aulas de informática basica e avançada. Conte?do personalizado. Pode ser particular ou em grupo
R$ 60 / h
César D.
Mogi Guaçu / SP
César D.
4,9 (787 avaliações)
Horas de aulas particulares ministradas 87 horas de aula
Tarefas resolvidas 955 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
C - Geral Programação em C Intermediário C - matriz
Graduação: Matemática Aplicada e Computacional (Universidade Estadual de Campinas (UNICAMP))
Faça aulas de matemática, computação e programação em c, c++, java e python.
R$ 50 / h
Josenilton G.
Arapiraca / AL
Josenilton G.
5,0 (2 avaliações)
Horas de aulas particulares ministradas 109 horas de aula
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
C - Listas Encadeadas C - matriz C - Structs
Graduação: Engenharia de Softeware (Estácio de Sá - SP)
Fala futuro nerd hi-thec, sou o professor,programador,t.i,maker,josenilton galdino, com mais de 9 anos de experiência,vem ser hi-thec comigo!!!