Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void* splice(int typesize,void* arr,
- int size,int start, int length,
- void* stuff,int size2){
- int gap = length-size2;
- void* ptr = malloc(typesize*(size-gap));//--------(1)--------
- if(ptr==NULL){
- puts("error");
- return NULL;
- }
- memmove(ptr,arr,typesize*size);
- memmove(ptr+typesize*start,stuff,typesize*size2);
- memmove(ptr+typesize*(start+size2),arr+typesize*(start+length),
- typesize*(size-start-length));
- return ptr;
- }
- int main(){
- setbuf(stdout,NULL);
- int start = 1;
- int delete = 6;
- long long* oldArray= malloc(sizeof(long long)*7);
- long long* stuff = malloc(sizeof(long long)*3);
- oldArray[0]=7LL;
- oldArray[1]=8LL;
- oldArray[2]=4LL;
- oldArray[3]=1LL;
- oldArray[4]=55LL;
- oldArray[5]=67LL;
- oldArray[6]=71LL;
- stuff[0]=111LL;
- stuff[1]=233LL;
- stuff[2]=377LL;
- int newsize = 7-(delete-3);
- void* newArray = splice(sizeof(long long),oldArray,7,start,delete,stuff,3);
- if(newArray){
- //------------crash happens here-----------
- //free(oldArray);
- //-------------
- oldArray = newArray;
- int i=0;
- for(;i<newsize;i++){
- printf("%I64dn",oldArray[i]);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement