Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Το προγραμμα μου δουλευει κανονικά σε Linux αλλα κανει crash σε Windows . υποθέτω εχει να κανει με τα pointers αλλα δεν εχω ιδεα πως να το φτιαξω

void MakeSubArray(int *result,int a[],int p)
{
  int r[p];
  for(int c=0;c<p;c++)
  {
    r[c]=a[c];
    if(c<=p)
    {
      result[c]=r[c];
    }
  }
}

int main()
{
	int size=13;
	int sequence[]={1,9,8,6,4,8,7,3,2,80,69,4,2};
	for(int count =0;count<size;count++)
	{
	  if(count>=1)
	  {
		int * sub = (int*)malloc(count);
		MakeSubArray(sub,sequence,count);
	 }
	}
	return 0;
}

BTW Χρησιμοποιώ MinGw για windows

Επεξ/σία από TheRammer
Δημοσ.

στη δήλωση της συνάρτησης το result νομίζω θέλει & αντί για *.

// passing parameters by reference
#include <iostream>
using namespace std;

void duplicate (int& a, int& b, int& c)
{
  a*=2;
  b*=2;
  c*=2;
}

int main ()
{
  int x=1, y=3, z=7;
  duplicate (x, y, z);
  cout << "x=" << x << ", y=" << y << ", z=" << z;
  return 0;
}

ετσι μου το είχαν δείξει...

Δημοσ.

Παραβλέποντας την ανάποδη περιγραφή που σου τόνισε και ο άλλος φίλος και ότι ο κώδικας δεν είναι (ακόμη τουλάχιστον) C++ αλλά είναι C και ότι δεν καταλαβαίνω γιατί το λύνεις έτσι, δες το παρακάτω σημείο.

 

 

		int * sub = (int*)malloc(count);
BTW Χρησιμοποιώ MinGw για windows

 

Η malloc εκχωρεί μνήμη για count bytes όχι για count ακεραίους.

Δημοσ.

Παραβλέποντας την ανάποδη περιγραφή που σου τόνισε και ο άλλος φίλος και ότι ο κώδικας δεν είναι (ακόμη τουλάχιστον) C++ αλλά είναι C και ότι δεν καταλαβαίνω γιατί το λύνεις έτσι, δες το παρακάτω σημείο.

 

 

Η malloc εκχωρεί μνήμη για count bytes όχι για count ακεραίους.

Thanks a lot , Ξεχασα λιγο την λειτουργια της "malloc" . τωρα το αλλαξα σε "(int*)malloc(count*4);" (4 εινα το μεγεθος int σε bytes) και δουλεψε κανονικά

Δημοσ.

Uhmmm γιατι ο τυπος μεταβλητης "int" χρησημοποιεί πάντα 4 bytes μνημηςς

Στο συστημα σου μπορει. Αλλα ποτε δε μπορεις να εισαι σιγουρος για το μεγεθος που εχει ενας τυπος οποτε παντα να χρησιμοποιεις το sizeof().

Δηλ στη περιπτωση σου

int * sub = (int*)malloc(count * sizeof(int));

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...