函数实现既能开辟新空间、又能对原来空间大小进行调整、并且能对新增部分设置为0
2013-12-04 18:07
309 查看
getmem.h
getmem.cpp
#ifndef GETMEM_H_ #define GETMEM_H_ #include <stdlib.h> #include <string> using namespace std; template<class T> void getmem(T*& oldmem, int elems) { typedef int cntr; const int csz = sizeof(cntr); const int Tsz = sizeof(T); if (elems == 0) { free(&(((cntr*)oldmem)[-1])); return; } T* pp = oldmem; cntr* p = (cntr*)pp; cntr oldcount = 0; if (pp) { p = (cntr*)pp; p--; oldcount = *(cntr*)p; } T* m = (T*)realloc(p, elems * Tsz + csz); *((cntr*)m) = elems; const cntr increment = elems - oldcount; if (increment > 0) { long startadr = (long)&(m[oldcount]); startadr += csz; memset((void*)startadr, 0, increment * Tsz); } oldmem = (T*)&(((cntr*)m)[1]); } template<class T> inline void freemem(T* m) { getmem(m, 0); } #endif
getmem.cpp
#include "getmem.h" #include <iostream> using namespace std; int main() { int* p = 0; getmem(p, 10); for (int i = 0; i < 10; i++) { cout << p[i] << ' '; p[i] = i; } cout << '\n'; getmem(p, 20); for (int j = 0; j < 20; j++) { cout << p[j] << ' '; p[j] = j; } cout << '\n'; getmem(p, 25); for (int k = 0; k < 25; k++) { cout << p[k] << ' '; } freemem(p); cout << '\n'; float* f = 0; getmem(f, 3); for (int u = 0; u < 3; u++) { co 4000 ut << f[u] << ' '; f[u] = 3.14159f; } cout << '\n'; getmem(f, 6); for (int v = 0; v < 6; v++) { cout << f[v] << ' '; } freemem(f); system("pause"); return 1; }
相关文章推荐
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 有两个升序排列的数组A1和A2,给A1开辟的剩余内存有足够空间容纳A1,请实现一个函数,把A2中所有数字插入到A1中,并且是按照升序排列的
- 调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签(一)
- Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签
- 【对转载进行了部分解释】CRoutingZone的实现机制 以及 process()中一些函数的意义
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 通过操作指针,与指针做函数参数'实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。