मैं एक विभाजन को लागू कर रहा हूं और बहुपद एल्गोरिथ्म को जीत सकता हूं, इसलिए मैं इसे ओपनसीएल कार्यान्वयन के खिलाफ बेंचमार्क कर सकता हूं, लेकिन मुझे mallocकाम नहीं मिल सकता है । जब मैं प्रोग्राम चलाता हूं, तो यह सामान का एक गुच्छा आवंटित करता है, कुछ चीजों की जांच करता है, फिर size/2एल्गोरिथ्म को भेजता है। फिर जब मैं mallocलाइन मारता हूं तो यह फिर से बाहर निकलता है:
malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
प्रश्न में पंक्ति है:
int *mult(int size, int *a, int *b) {
int *out,i, j, *tmp1, *tmp2, *tmp3, *tmpa1, *tmpa2, *tmpb1, *tmpb2,d, *res1, *res2;
fprintf(stdout, "size: %d\n", size);
out = (int *)malloc(sizeof(int) * size * 2);
}
मैंने एक के साथ आकार की जाँच की fprintf, और यह एक सकारात्मक पूर्णांक है (आमतौर पर उस बिंदु पर 50)। मैंने mallocएक सादे नंबर के साथ भी कॉल करने की कोशिश की और मुझे अभी भी त्रुटि है। मैं अभी चल रहा हूँ, और Google से अब तक मुझे जो कुछ भी नहीं मिला है वह मददगार है।
किसी भी विचार क्या चल रहा है? मैं यह पता लगाने की कोशिश कर रहा हूं कि एक संकलक त्रुटि के मामले में एक नए जीसीसी को कैसे संकलित किया जाए, लेकिन मुझे वास्तव में संदेह है।