 		self.init(src._rows, src._columns)
 	}
 
-	public init(referenceOf src: FloatBuffer, startRow: Int, startColumn: Int, rows: Int, columns: Int) {
+	public init(referenceOf pointer: Pointer, rows: Int, columns: Int) {
+
+		_rows = rows;
+		_columns = columns
+		_capacity = rows * columns
+
+		_allocationSize = 0
+		_buffer = pointer
+	}
+
+	public convenience init(referenceOf src: FloatBuffer, startRow: Int, startColumn: Int, rows: Int, columns: Int) {
 		assert(startRow < src._rows)
 		assert(startColumn < src._columns)
 		assert(startRow * src._columns + startColumn + rows * columns <= src._capacity)
 		
-		_rows = rows;
-		_columns = columns
-		_capacity = rows * columns
-		
-		_allocationSize = 0
-		_buffer = src._buffer + (startRow * src._columns + startColumn)
+		self.init(referenceOf: src._buffer + (startRow * src._columns + startColumn), rows: rows, columns: columns)
 	}
 
 	public convenience init(referenceOf src: FloatBuffer, rowIndex: Int) {

		return _columns
	}

	// MARK: プライベート

	internal var _buffer: Pointer
	internal var _rows: Int
	internal var _columns: Int
	internal var _capacity: Int
	internal var _allocationSize: Int
}

		resetLazy(src._rows, src._columns)
	}

	// MARK: - プロパティ

	public var capacity: Int {
		return _capacity
